画家王原:自己总结struts2上传文件步骤
单文件上传分三步:
第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar(struts2.1版本后需要添加此包),commons-io.1.3.2.jar两个jar包
第二步:
把form表单的enctype属性设置为:multipart/form-data.如下:
第三步:在action类中添加以下属性:属性中红色部分对应表单中文件字段的名称。
public class UploadFileAction{
private File uploadImage;//得到上传的文件
private String uploadImageContextType;//得到文件的类型
private String uploadImageFileName;//得到文件的名称
//省略了属性的set、get方法
public String upload() throws Exception{
//定义上传文件的存放目录/images。如果不定义则默认是放在当前站点的temp目录下,应用一关闭,目录会被删除
String realpath = ServletActionContext.getServletContext().getRealPath(“/images”);
File file = new File(realpath);
if(!file.exits()){
file.mkdirs();
}
//FileUtils类存在于commons-io.1.3.2.jar包中
//前面参数表示源文件,后面的表示目标文件
FileUtils.copyFile(uploadImage,new File(file, uploadImageName));
return SUCCESS;
}
}
思考:如果要上传大容量文件,因struts2默认的上传最大文件大小为2M,所以,如可上传超过2M的文件,需要修改它的默认配置文件的常量。需要在struts.xml文件中增加一句:
修改后,就可以上传10M大小的文件了。
多文件上传分三步:
第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar(struts2.1版本后需要添加此包),commons-io.1.3.2.jar两个jar包
第二步:
把form表单的enctype属性设置为:multipart/form-data.如下:
第三步:在action类中添加以下属性:属性中红色部分对应表单中文件字段的名称。
public class UploadFileAction{
private File[] uploadImages;//得到上传的文件,定义为数组或List类型都可以
private String[] uploadImagesContextType;//得到文件的类型, 定义为数组或List类型都可以
private String[] uploadImagesFileName;//得到文件的名称, 定义为数组或List类型都可以
//省略了属性的set、get方法
public String upload() throws Exception{
//定义上传文件的存放目录/images。如果不定义则默认是放在当前站点的temp目录下,应用一关闭,目录会被删除
String realpath = ServletActionContext.getServletContext().getRealPath(“/images”);
File file = new File(realpath);
if(!file.exits()){
file.mkdirs();
}
for(inti=0;i File uploadImage = uploadImages[i]; //FileUtils类存在于commons-io.1.3.2.jar包中 //前面参数表示源文件,后面的表示目标文件 FileUtils.copyFile(uploadImage,new File(file, uploadImagesName[i])); } return SUCCESS; } }