转载:http://blog.csdn.net/Xwin1989/article/details/8979239
1、form
/**
*
*/
package com.test.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = null;
try {
response = ServletActionContext.getResponse();
} catch (RuntimeException e) {
}
return response;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = null;
try {
request = ServletActionContext.getRequest();
} catch (RuntimeException e) {
}
return request;
}
@Override
public String execute() throws Exception {
Map<String, Object> map = ActionContext.getContext().getParameters();
boolean isMultipart = ServletFileUpload
.isMultipartContent(getRequest());
if (isMultipart) {// type=multipart/form-data
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);// 设置上传文件的最大容量
List<FileItem> items = upload.parseRequest(getRequest());// 取得表单全部数据
for (FileItem item : items) {
if (item.isFormField()) {// 如果不是文件类型
// String name = item.getFieldName(); 表单中某个控件的名称
// String value = item.getString(); 表单中某个控件的值
} else {
String filename = item.getName();
File f = new File(filename); // 保存的文件
item.write(f);// 保存文件
}
}
} else {
}
HttpServletRequest request = getRequest();
FileOutputStream fos = new FileOutputStream("d:\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
return SUCCESS;
}
}
2、js脚本
/**
*
*/
package com.test.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = null;
try {
response = ServletActionContext.getResponse();
} catch (RuntimeException e) {
}
return response;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = null;
try {
request = ServletActionContext.getRequest();
} catch (RuntimeException e) {
}
return request;
}
@Override
public String execute() throws Exception {
Map<String, Object> map = ActionContext.getContext().getParameters();
boolean isMultipart = ServletFileUpload
.isMultipartContent(getRequest());
if (isMultipart) {// type=multipart/form-data
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);// 设置上传文件的最大容量
List<FileItem> items = upload.parseRequest(getRequest());// 取得表单全部数据
for (FileItem item : items) {
if (item.isFormField()) {// 如果不是文件类型
// String name = item.getFieldName(); 表单中某个控件的名称
// String value = item.getString(); 表单中某个控件的值
} else {
String filename = item.getName();
File f = new File(filename); // 保存的文件
item.write(f);// 保存文件
}
}
} else {
}
HttpServletRequest request = getRequest();
FileOutputStream fos = new FileOutputStream("d:\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
return SUCCESS;
}
}
3、struts2拦截
/**
*
*/
package com.test.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = null;
try {
response = ServletActionContext.getResponse();
} catch (RuntimeException e) {
}
return response;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = null;
try {
request = ServletActionContext.getRequest();
} catch (RuntimeException e) {
}
return request;
}
@Override
public String execute() throws Exception {
Map<String, Object> map = ActionContext.getContext().getParameters();
boolean isMultipart = ServletFileUpload
.isMultipartContent(getRequest());
if (isMultipart) {// type=multipart/form-data
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);// 设置上传文件的最大容量
List<FileItem> items = upload.parseRequest(getRequest());// 取得表单全部数据
for (FileItem item : items) {
if (item.isFormField()) {// 如果不是文件类型
// String name = item.getFieldName(); 表单中某个控件的名称
// String value = item.getString(); 表单中某个控件的值
} else {
String filename = item.getName();
File f = new File(filename); // 保存的文件
item.write(f);// 保存文件
}
}
} else {
}
HttpServletRequest request = getRequest();
FileOutputStream fos = new FileOutputStream("d:\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
return SUCCESS;
}
}