文件上传原理:
Struts2并未提供自己的请求解析器,也就是Struts2不会自己去处理multipart/form-data的请求,它需要调用其他请求解析器,将HTTP请求中的表单域解析出来。但Struts2在原有的上传解析器基础上做了进一步封装,更进一步简化了文件上传。Struts2默认使用的是Jakarta的Common-FileUpload框架来上传文件,因此,要在web应用中增加两个jar文件:commons-fileupload-x.jar和commons-io-x.jar.它在原上传框架上做了进一步封装,简化了文件上传的代码实现,取消了不同上传框架上的编程差异。
如果要改成其他的文件上传框架,可以修改struts.multipart.parser常量的值为cos/pell,默认值是jakarta,并在classpath中增加相应上传的类库:例如配置成cos上传(struts.multipart.parser=cos struts.multipart.maxSize=1024指定文件的最大字节数)。
不管用commons-FileUpload还是用cos框架实现文件上传。都是通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器文件绑定到Action的实例中。
实现步骤:
1.把struts需要的jar包导入到相应的项目的lib中
2.在web.xml文件中配置struts 的FilterDispacter
3.创建一个文件上传的action
4.添加struts.xml文件
5.创建一个前台jsp页面
6.部署项目,可以进行测试。
多文件上传:
这个只需要修改 action为
2.修改 struts.xml为
3.修改前台界面为
4.部署测试,ok。
注意其中:文件上传常见的一些错误信息
1、struts.messages.error.uploading 当文件不能上传的时候包这个错误
2、struts.messages.error.file.too.large 当上传的文件太大的时候报这个错误,默认的文件大小是2MB
3、struts.messages.error.content.type.not.allowed - 当上传的文件不是自定的文件类型时 默认是所有的文件类型都可以上传