我有一个允许用户下载 XML 文件的 webapp。我使用 Spring 的 Response 实体来返回生成的文件。
它在 Firefox 和 Chrome 上运行良好,直接提示用户保存文件。当您右键单击并“下载为”时也可以使用。但是在 IE 上,它会在浏览器中打开 XML。但是我无法下载文件。首先,它完全忽略了我的文件名,所以我收到提示下载“baseURL/download?id=xx”,它提示下载.html,甚至无法下载:“无法下载文件”。
这就是我的方法的样子。我在评论中尝试了一些事情......
@RequestMapping
public ResponseEntity<Classification> handle(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
Classification xmlToDownload = null;
HttpHeaders responseHeaders = new HttpHeaders();
// responseHeaders.setContentType(MediaType.APPLICATION_XML);
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// responseHeaders.set("Content-Type", "application/xml");
responseHeaders.set("Content-Disposition", "attachment;filename=\"Classification.xml\" ");
// responseHeaders.setContentDispositionFormData("filename", "Classification.xml");
responseHeaders.setCacheControl("public");
responseHeaders.setPragma("public");
xmlToDownload = classificationsService.getClassificationById(Long.valueOf(classificationId));
}
return new ResponseEntity<Classification>(xmlToDownload, responseHeaders, HttpStatus.CREATED);
我的标题有问题吗?