Download在struts2下的实现

1.jsp页面
<a href="fileDownload?filePath=images/你好啊.txt">点击下载</a>

2.DownloadAction.java
public Class DownloadAction extends ActionSupport{
private String filePath;//文件路径
private String fileName;//文件名

public InputStream getTargetFile() throws Exception{
HttpServletRequest request=ServletActionContext.getRequest();
filePath=request.getParameter("filePath");
filePath=new String(filePath.getBytes("ISO-8859-0"),"UTF-8");//字节流转化解决后台接受乱码问题
fileName=filePath.substring(filePath.lastIndexof("/"));
fileName=java.net.URLEncoding.encode(fileName,"UTF-8");//转化乱码解决下载的时候提示文件名乱码问题
return ServletActionContext.getServletContext.getResourceAsStream(filePath);
}
}

3.struts.xml
<action name="fileDownload" class="..">
<result name="success" type="stream">
<param name="contentType">text/plain</param> //如果是text/plain表示纯文本,text/xml表示xml image/gif image/jepg表示图片
<param name="inputName">targetFile</param> //这里取值是去action中的get方法后面的把第一个字符改成小写,如getTargetFile()这里就是targetFile
<param name="contentDisposition">attachment;filename="${fileName}"</param>
//文件下载的处理方式,一种是inline一种是attachment,inline是内联,默认在浏览器打开,attachment是附件默认的点击保存
<param name="bufferSize">4069</param>
//设置缓冲
</result>
</action>

4.解决中文乱码的第二种方法
在方法中
HttpServletResponse response=ServletActionContext.getResponse();
fileName=java.net.URLEncoding.encode(fileName,"UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
xml中就不用写那条param了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值