标签:
struts2文件下载,根据浏览器的不同会有不同的错误出现。有的在ie下正常,但是到了火狐就不可以了。具体原因现在还不得知。主要的问题还是在下载文件名为中文的情况,英文没有太多的区别。这里给出详细代码
jsp页面: <a href="<s:url value=‘employee/test!downloadFile.action‘><s:param name=‘fileName‘>ttt.doc</s:param> </s:url>">下载</a>
action中:
// 文件下载 public InputStream getDownloadFile() throws Exception{ System.out.println(getFileName()); InputStream inputStream = ServletActionContext.getServletContext().getResourceAsStream("/file/廖哲毅论文2.doc"); System.out.println(inputStream); return inputStream; } // 下载 public String downloadFile() throws Exception { return SUCCESS; } //定义文件名称 private String fileName; public void setFileName(String name) throws Exception{
//在IE下可以正常显示中午名称,但是在火狐下就不可以了。具体原因不详 this.fileName = new String(name.getBytes("ISO8859-1"), "utf-8"); } public String getFileName(){ return this.fileName; }
struts.xml配置文件:
<action name="test" class="testAction"> <result name="successf">/index.jsp </result> <result name="success" type="stream"> <!--指定文件下载类型 application/octet-stream默认值可以下载所有类型 --> <param name="contentType"> application/octet-stream; </param> <!-- 指定下载的文件名和显示方式 ,但注意中文名的乱码问题,解决办法是:进行编码处理(不同浏览器会有不同情况)--> <!--contentDisposition是文件下载的处理方式,包括内联(inline)和附件(attachment), 默认是inline, 使用附件时这样配置:attachment;filename="文件名" 。--> <param name="contentDisposition"> attachment;filename="${fileName}" </param> <!--由getDownloadFile()方法获得inputStream--> <param name="inputName">downloadFile</param> <!-- 指定下载文件的缓存大小--> <param name="bufferSize">2048</param> </result> </action>
标签:
原文地址:http://www.cnblogs.com/kailing-con/p/4244139.html