无法在IE8 - spring 3应用程序中下载XML文件

时间:2012-02-03 09:25:24

标签: java jquery download

我知道这个问题会被问到好几次,但我仍然无法解决这个问题..

我想要浏览器IE8,Mozilla强制下载XML文件作为附件。但是Mozilla在浏览器中打开XML文件,IE8也尝试在屏幕上呈现XML文件但是渲染不正确。

这是我在spring 3控制器中的代码。

Pmd17Export export=exportService.getFlatFile(dbdto.getExportFileId());
IOUtils.copy(export.getFlatFile().getBinaryStream(), response.getOutputStream());
response.setContentType("application/octet-stream");      
response.setHeader("Content-Disposition",
                   "attachment;filename=" + export.getFlatFileName()); 
response.flushBuffer();

注意:在浏览器中,我首先进行js验证,然后使用jquery

提交表单
function validate() {
    //validate form
    if(noerror) {
        $("form").submit();
    }
}

附上我在firebug中可以看到的请求和响应标题

Response Headersview 
Date    Fri, 03 Feb 2012 12:55:42 GMT
Server  Apache-Coyote/1.1
Transfer-Encoding   chunked

Request Headersview 
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Cookie  JSESSIONID=5ED81A79A2297AD044E6DBB2B90806E7
Host    localhost:8080
Referer http://localhost:8080/dbcomparision/app/exportdatabase.html
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Request Headers From Upload Stream
Content-Length  15
Content-Type    application/x-www-form-urlencoded

请告诉我如何强制两个浏览器下载此文件。

1 个答案:

答案 0 :(得分:0)

在发送数据之前,是否需要设置标题?即。

response.setContentType("application/octet-stream");      
response.setHeader("Content-Disposition",
                   "attachment;filename=" + export.getFlatFileName()); 
IOUtils.copy(export.getFlatFile().getBinaryStream(), response.getOutputStream());