Struts框架_10 上传下载

1.文件的上传:
1).表单需要注意的3点
2)Struts2 的文件上传实际,使用的是CommonsFileUpload组件,所以需要导入
commons -fileup1oad-1.3. jar
commons-io-2.0.1.jar
3). Struts2 进行文件上传需要使用FileUpload 拦截器
4),基本的文件的上传: 直接在Action中定义如下3个属性,并提供对应的getter和setter
//文件对应的File对象
 private File [fileFieldName];
//文件类型
private String [fileFieldName ]ContentType;
//文件名
private String [ fileF ieldName]FileName ;
5). 使用IO流进行文件的上传即可

6)若传递多个文件,则上述的3个属性,可以改为List类型!多个文件域的name 属性值需要一 致

如果出现的bug:描述回显的是整体的描述

解决:

7).可以对上传的文件进行限制吗?例如扩展名,内容类型,上传文件的大小?若可以,则若出错,显示什么错误消息呢?消息可以定制吗?   可以的!
可以通过配置FileUploadInterceptor 拦截器的参数的方式来进行限制
maximumSize (optional) -默认的最大值为2M. 上传的单个文件的最大值
allowedTypes (optional) .允许的上传文件的类型,多个使用,分割
allowedExtensions (optional) -允许的上传文件的扩展名。 多个使用分割

注意:在org. apache. struts2下的default . properties中有对上传的文件总的大小的限制。可以使用常量的方式来修改该限制
struts . multipart . maxSize=2097152


定制错误消息。可以在国际化资源文件中定义如下的消息:
struts . messages . error . uploading -文件上传出错的消息
struts . messages . error .file.too.large -文件超过最大值的消息
struts . messages . error . content . type . not . allowed -文件内容类型不合法的消息

问题:此种方式定制的消息并不完善。可以参考org.apache.struts2下的 struts- messages.properties,可以提供更多的定制信息,

2.文件的下载:
1). Struts2 中使用type=" stream"的result进行下载即可
2).具体使用细节参看struts-2.3.15.3-all/struts-2.3.15. 3/docs/WW/ docs/ stream- result . html
3). 可以为stream的result 设定如下参数
contentType:结果类型
contentLength:下载的文件的长度
contentDisposition:设定Content - Dispositoin响应头。该响应头指定接应是一个文件下载类型,- 般取值为attachment ; filename
inputName:指定文件输入流的getter定义的那个属性的名字。默认为inputStream
bufferSize:缓存的大小。默认为1024
allowCaching:是否允许使用缓存
contentCharSet:指定下载的字符集
4).以上参数可以在Action 中以getter方法的方式提供!

action中定义字段,并给getset方法: