Struts2 框架学习——文件上传和下载

一、单文件上传

在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮我们全做完了。我们只需要添加一点点信息,就可以完成上传的功能。  

1、Action中需要提供三个属性

File fieldName;  //文件表单项名称,也就是上传控件所填写的name属性名

String fileContentType;  //file就使用的文件表单项名和固定ContentType,代表获取上传文件的类型

String fileFileName;    //file同样是fieldName+FileName(固定),代表上传文件的文件名

比如有<input type=”file” name=”myUpload”/> 表单项名称为: myUpload, 那么在action中的三个属性分别为

myUpload  myUploadContentType  myUploadFileName

2、在struts.xml中设置上传的一些配置信息,

设置常量(可选)

struts.multipart.parser:指定使用的上传组件,默认值为jakarta,表示使用commons-fileupload组件,Struts2还支持cos和pell

struts.multipart.saveDir:临时目录,默认为Tomcat中的work目录

struts.multipart.maxSize:整个请求大小限制,默认值为2097152b(1b等于8bit,1kb=1024byte,1M=1024kb), 也就是2M,这个是限制整个请求的大小,而不是单一文件的大小

Struts2 框架学习——文件上传和下载

fileUploadl拦截器三个参数(action中以param来设置值,可选)

maximumSize:上传的单个文件的大小限制  默认2M

allowedTypes:允许上传文件的类型,多个类型以逗号隔开  如果不指定,默认允许任何类型的文件上传

allowedExtensions:允许上传文件的扩展名,多个扩展名以逗号隔开  如果不指定,默认允许任何类型的文件上传
     

3、jsp页面中form表单的enctype需要指定为 enctype=”multipart/form-data”

4、前面3步完成后,只需要在action中创建保存上传文件的位置,然后将其放入进去即可,fileUpload拦截器已经帮我们将各种参数获取到了。

JSP

Struts2 框架学习——文件上传和下载

struts.xml

Struts2 框架学习——文件上传和下载

action

Struts2 框架学习——文件上传和下载

上传的文件会放置在tomcat中该项目的WEB-INF的pictrue文件夹下。

二、多文件上传

会有两种解决方案

第一种,比较煞笔的,多写几个上传框,类似这样

Struts2 框架学习——文件上传和下载

jsp  注意name要同名

Struts2 框架学习——文件上传和下载

action

Struts2 框架学习——文件上传和下载

这样就可以选择多个文件同时上传了,但是我是从来没见过这种多文件上传的,哈哈,所以用第二种方式,只有一个上传框,能同时选取多个文件一起上传,

第二种:使用 uploadify 插件

三、文件下载。

在讲解strust.xml中的action的resultType时就讲过一个stream的结果类型,该类型就是用来下载的。

strust.xml

Struts2 框架学习——文件上传和下载

action

需要编写getPic(),和getFileName()这两个方法,一个是获取输入流,一个是获取中文名。其他的该怎么写就怎么写。

Struts2 框架学习——文件上传和下载