首页 > 代码库 > struts文件下载

struts文件下载

struts2文件下载,根据浏览器的不同会有不同的错误出现。有的在ie下正常,但是到了火狐就不可以了。具体原因现在还不得知。主要的问题还是在下载文件名为中文的情况,英文没有太多的区别。这里给出详细代码

jsp页面: <a href="http://www.mamicode.com/ttt.doc ">下载</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>

 

struts文件下载