admin管理员组

文章数量:1538169

2024年6月13日发(作者:)

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. struts2

14. Dispatcher

15.

16.

17. struts2

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',

本文标签: 下载文件使用文件名项目