1、文件上传:
--表单准备:
> 需把HTML表单的enctype属性设置为multipart/form-data;
> 需把HTML表单的method属性设置为post;
> 需添加<input type=”file”> 字段;
--struts2中,FileUpload拦截器和Jakarta Commons FileUpload组件可以完成文件的上传;
> 1) 在Jsp页面使用file标签,如果需要一次上传多个文件,就必须使用多个file标签,并且他们的name必须相同(也可以使用list);
> 2) 在Action中添加三个和文件上传相关的属性
①private File fieldName;
②private String fieldNameContentType;
③private String fieldNameFileName;
--上传多个文件:
> Action类中的三个属性修改为List类型即可(List<File>);
--对上传文件进行限制(扩展名、大小等):
> 通过配置FileUploadInterceptor拦截器的参数来进行限制;
1) maximumSize--允许文件大小最大值,默认为2M;
2) allowedTypes--允许上传文件的类型,使用 , 分隔;
3) allowedExtensions--允许的扩展名,使用 , 分隔;
> 定制错误消息,在资源文件中定义如下key/value:
1) Struts.messages.error.uploading--文件出错
2) struts.messages.error.file.too.large--文件超过限定大小
3) struts.messages.error.content.type.not.allowed--文件内容类型不符
4) struts.messages.error.file.extension.not.allowed--文件扩展名不符
2、文件下载:
--struts2为文件下载提供了一种Stream结果类型,使用时不必准备一个Jsp也没页面;
--Stream结果类型的参数设置:
> contentType:被下载的文件的MIME类型,默认为text/plain
> contentLength:大小,以字节为单位
> contentDisposition:响应头,默认值为inline
> inputName:Action中提供的文件的输入流,默认为inputStream
> bufferSize:文件下载时缓冲区大小,默认为1024B
> allowCaching:文件下载是是否允许使用缓存,默认为true
> contentCharSet:下载文件时的字符编码;
--Steam结果类型的参数可以在Action以属性的方式覆盖;
--示例: