Struts2简单的实现多文件上传
1:文件上传
1、struts2的文件上传功能使用的是apache下的commons-fileupload来实现。
2、Jsp的表单要求是post提交,并且enctype=”multipart/form-data”
jsp页面代码:
3、action的代码:在Action中需要提供3个属性,一个File 类型,名称是表单域名,其它两个分别是表单域名+FileName,表单域名+ContentType;并且提供get/set方法
Action处理代码
public class BatchUploadAction {
//
// 得到上传的文件(要与form表单中file控件名一致)
private File[] file;
// 得到文件的名称
private String[] fileFileName;
// 得到文件的类型
private String[] fileContentType;
public String execute() throws IOException {
// 多张图片上传的方法
HttpServletRequest request = ServletActionContext.getRequest();
// 获取要保存文件夹的物理路径(绝对路径)
String path = request.getRealPath("/upload");
for (int i = 0; i < file.length; i++) {
// 测试此抽象路径名表示的文件或目录是否存在。若不存在,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
if (!file[i].exists()) {
file[i].mkdirs();
}
//解决文件名重复的问题 :String a = UUID.randomUUID().toString() + this.fileFileName[i];
String a = UUID.randomUUID().toString() + this.fileFileName[i];
InputStream is = new FileInputStream(file[i]);
OutputStream os = new FileOutputStream(new File(path, a));
byte[] buffer = new byte[200];
int len = 0;
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
os.close();
is.close();
}
return Action.SUCCESS;
}
public File[] getFile() {
return file;
}
public void setFile(File[] file) {
this.file = file;
}
public String[] getFileFileName() {
return fileFileName;
}
public void setFileFileName(String[] fileFileName) {
this.fileFileName = fileFileName;
}
public String[] getFileContentType() {
return fileContentType;
}
public void setFileContentType(String[] fileContentType) {
this.fileContentType = fileContentType;
}
}
4:Struts.xml配置文件
5:启动服务,即可运行。