struts2文件上传问题
上传表单页面的要求:
第一个要求:表单提交方式 post
第二个要求:form标签里面有属性 enctype属性值 修改为 multipart/form-data
第三个要求:在表单里面有文件上传项,有name属性 <input type= “file” name=“”/>
在action直接得到上传文件名称和上传文件
- 在action定义成员变量,生成变量set和get方法:
1 private File upload; 2 private String uploadFileName; 3 public File getUpload() { 4 return upload; 5 } 6 public void setUpload(File upload) { 7 this.upload = upload; 8 } 9 public String getUploadFileName() { 10 return uploadFileName; 11 } 12 public void setUploadFileName(String uploadFileName) { 13 this.uploadFileName = uploadFileName; 14 }
在具体的action的方法里面写上传逻辑
- 在服务器里面创建文件
- 把本地文件复制到服务器文件里面
1 if(upload != null){ 2 //在服务器文件夹里面创建文件 3 File serverFile = new File("F:\\sshimg"+"/"+uploadFileName); 4 //把文件上传复制到服务器里面 5 FileUtils.copyFile(upload, serverFile); 6 }
问题:
如果上传文件超过2M,出现异常
(1)使用struts2做文件上传文件大小默认有限制的,默认 2M
(2)可以设置上传文件大小
- struts2里面有常量
1 <constant name="struts.multipart.maxSize" value="209715200"></constant>
input是struts2里面错误处理机制,如果上传文件超过设置的大小之后,自动返回结果,结果名称是 input
- 解决:配置input结果,到错误页面、
1 <result name="input">/jsp/error.jsp</result>