Struts2简单的实现多文件上传

1:文件上传
1、struts2的文件上传功能使用的是apache下的commons-fileupload来实现。
2、Jsp的表单要求是post提交,并且enctype=”multipart/form-data”
jsp页面代码:

Struts2简单的实现多文件上传

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配置文件

Struts2简单的实现多文件上传
5:启动服务,即可运行。