Spring mvc ie下载出错

来源:互联网 发布:淘宝取消评价折叠 编辑:程序博客网 时间:2024/05/16 08:18

        最近写了个站,关于团队的tips管理的,上线之前一直使用的谷歌浏览器做的测试。上线之后发现公司的默认给的浏览器是ie,导致出现很多问题。在使用ie下载文件时,表现为下载名为url,导致文件无法下载,服务器端代码如下:

    @RequestMapping("download")        public ResponseEntity<byte[]> download(String title) throws IOException {  ApplicationContext context= null;String os = System.getProperty("os.name");  if(os.toLowerCase().startsWith("win")){  context=new ClassPathXmlApplicationContext("file:"+"src/main/webapp/WEB-INF/mvc-config.xml");}else{context=new ClassPathXmlApplicationContext("file:/home/cpta/tomcat8/webapps/ROOT/WEB-INF/mvc-config.xml");}    TipService tipService =(TipService)context.getBean("tipService");System.err.println(title);Tip tip=tipService.findTipBytitle(title);String url=tip.getUrl();        String path=System.getProperty("user.dir")+url;          File file=new File(path);          String fileName = url.substring(url.lastIndexOf("/")+1);        HttpHeaders headers = new HttpHeaders();            fileName=new String(fileName.getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题                headers.setContentDispositionFormData("attachment", fileName);           headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);           return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),                                              headers, HttpStatus.CREAT);        }  


在网上查了下,问题出在ie不支持HTTP Status 201的状态码。

HTTP Status 200 (成功)

-> 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。

HTTP Status 201 (已创建)

-> 请求成功并且服务器创建了新的资源。

参考:http://www.cnblogs.com/DeasonGuan/articles/Hanami.html


  @RequestMapping("download")        public ResponseEntity<byte[]> download(String title) throws IOException {  ApplicationContext context= null;String os = System.getProperty("os.name");  if(os.toLowerCase().startsWith("win")){  context=new ClassPathXmlApplicationContext("file:"+"src/main/webapp/WEB-INF/mvc-config.xml");}else{context=new ClassPathXmlApplicationContext("file:/home/cpta/tomcat8/webapps/ROOT/WEB-INF/mvc-config.xml");}    TipService tipService =(TipService)context.getBean("tipService");System.err.println(title);Tip tip=tipService.findTipBytitle(title);String url=tip.getUrl();        String path=System.getProperty("user.dir")+url;          File file=new File(path);          String fileName = url.substring(url.lastIndexOf("/")+1);        HttpHeaders headers = new HttpHeaders();            fileName=new String(fileName.getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题                headers.setContentDispositionFormData("attachment", fileName);           headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);           return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),                                              headers, HttpStatus.OK);          }    

所以只要将HttpStatus.CREAT(201)改为HttpStatus.OK(200)


0 0