java,spring mvc,文件下载

     最近由于项目需要,要实现excel文件的下载,通过spring mvc的相关文档,找到了spring mvc支持的文件下载的通用写法,如下所示:
@RequestMapping(value = "download", method = RequestMethod.GET)
    public ResponseEntity<byte[]> download(@RequestParam("fileName") String fileName)
                    throws IOException {
        HttpHeaders headers = new HttpHeaders();
        String rspName = resourceServerPath + fileName;
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", new String(fileName.getBytes("gb2312"),
                        "iso-8859-1"));
        File file = new File(rspName);
        byte[] bytes = FileUtils.readFileToByteArray(file);
        try {
            if (file.exists()) {
                file.delete();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.CREATED);
    }

    由于是在chrome下开发的,开发完测试没问题,就直接发布出去了。发布后,偶尔会有客户反应在IE浏览器中没法导出文件。今天抽了点时间到IE里面重现,发现确实是自己没有好好在IE环境下测试。经过各方面的咨询,发现是IE浏览器貌似不支持http 201响应码,便马上将返回的响应码改为200,改后的代码如下所示:
return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);

你可能感兴趣的:(spring,mvc,Excel)