博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2下载
阅读量:4980 次
发布时间:2019-06-12

本文共 1953 字,大约阅读时间需要 6 分钟。

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="document.pdf".
inputName: 指定文件输入流的 getter 定义的那个属性的名字. 默认为 inputStream
bufferSize: 缓存的大小. 默认为 1024
allowCaching: 是否允许使用缓存
contentCharSet: 指定下载的字符集
4). 以上参数可以在 Action 中以 getter 方法的方式提供!

package com.download.file;import java.io.FileInputStream;import java.io.InputStream;import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownloadAction extends ActionSupport {    private static final long serialVersionUID = 1L;    private String contentType;      //结果类型    private long contentLength;      //下载的文件的长度    private String contentDisposition;   //设定 Content-Dispositoin 响应头. 该响应头指定接应是一个文件下载类型, 一般取值为  attachment;filename="document.pdf".    private InputStream inputStream;    //指定文件输入流的 getter 定义的那个属性的名字. 默认为 inputStream            public String getContentType() {        return contentType;    }    public long getContentLength() {        return contentLength;    }    public String getContentDisposition() {        return contentDisposition;    }    public InputStream getInputStream() {        return inputStream;    }    @Override    public String execute() throws Exception {        contentType="text/txt";        contentDisposition = "attachment;filename=测试下载.txt";        ServletContext servletContext =                 ServletActionContext.getServletContext();        String fileName = servletContext.getRealPath("/files/测试下载.txt");        inputStream = new FileInputStream(fileName);        contentLength = inputStream.available();        return super.execute();    }    }

 

转载于:https://www.cnblogs.com/bulrush/p/7773881.html

你可能感兴趣的文章
Android ---paint类
查看>>
特殊的邻接表——立方体邻接表
查看>>
廖雪峰py笔记5之set
查看>>
mac linux rename命令行批量修改文件名
查看>>
开源无广告输入法Rime
查看>>
Raspbian开启root账户
查看>>
Active MQ 是什么?
查看>>
Flask-RESTful接口开发学习笔记一:实现简单的GET请求
查看>>
Developing for Multicore machines. Tasks in .NET 4.0 - Why/What/How?
查看>>
nvidia-smi命令执行很慢,如何改进
查看>>
很有趣的BIOS加载MBR到0X7C00的故事
查看>>
ESX VCENTER从模板快速布置IT应用
查看>>
leetcode-题2
查看>>
【CSS】使用CSS改变超链接样式
查看>>
angular.js测试框架protracotr自带的webdriver-manager启动问题“Invalid or corrupt jarfile”...
查看>>
程序是怎样跑起来的pdf
查看>>
sizeof(结构体)的计算
查看>>
Python学习笔记——基础篇【第六周】——shutil模块
查看>>
Sql中将字符串按分割符拆分
查看>>
.Net Core 使用EF Core方法
查看>>