2024年4月17日发(作者:)
struts2下载(使用配置文件)
1. 第一步
2.
3. 4. xmlns="/xml/ns/j2ee" 5. xmlns:xsi="/2001/XMLSchema-instance" 6. xsi:schemaLocation="/xml/ns/j2ee 7. /xml/ns/j2ee/web-app_2_"> 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
第二步:
1.
2. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
3. "/dtds/">
4.
5.
6.
7.
8. application/octet-stream
9. inputStream
10. attachment;filename="${fileName}"
11. 4096
12.
13.
14.
15.
当 result为stream类型时,struts2会自动根据你配置好的参数下载文件。
其中主要使用的参数是:
contentType 指定下载文件的文件类型 —— application/octet-stream 表示无限制
inputName 流对象名 —— 比如这里写inputStream,它就会自动去找Action中的getInputStream方法。
contentDisposition 使用经过转码的文件名作为下载文件名 —— 默认格式是
attachment;filename="${fileName}",将调用该Action中的getFileName方法。
bufferSize 下载文件的缓冲大小
之后写个DownloadAction:
1. package action;
2.
3. import tream;
4.
5. import tActionContext;
6.
7. public class DownloadAction {
8.
9. private String fileName;
10.
11. public void setFileName(String fileName) {
12. me = fileName;
13. }
14. public InputStream getInputStream() {
15. return vletContext().getResourceAsStream("/" + fileName);
16. }
17.
18. public String execute(){
19. return "success";
20. }
21.
22. }
* 注意使用getResourceAsStream方法时,文件路径必须是以“/”开头,且是相对路径。这个路径是相对于
项目根目录的。
* 可以用return new FileInputStream(fileName)的方法来得到绝对路径的文件。
在WEB-INF下随意丢一个,部署好后进入浏览器,输入tomcat地址/项目路径
/?fileName=即可下载到该文件。
附:contentType类型.
'ez' => 'application/andrew-inset',
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'application/msword',
'bin' => 'application/octet-stream',
'dms' => 'application/octet-stream',
'lha' => 'application/octet-stream',
'lzh' => 'application/octet-stream',


发布评论