gpt4 book ai didi

java - 通过 ResponseEntity 下载 XML 在 IE 中不起作用

转载 作者:行者123 更新时间:2023-12-01 04:21:52 24 4
gpt4 key购买 nike

我有一个网络应用程序,允许用户下载 XML 文件。我使用 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);

我的标题有问题吗?

最佳答案

所以...我从来没有让它在 IE 上以这种方式工作...我尝试将文件保存到磁盘,然后将其下载到响应输出流中。哪个有效(在 IE 上也有效)但我不喜欢这样,以防多个用户同时请求该文件......因为每次有人需要它时都会生成它。

相反,我使用了 JAXB marshall 方法,该方法将我的响应输出流作为参数并直接在其中写入 XML。

最后的样子是这样的:

    response.setContentType("application/xml");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
response.setHeader("Expires", "0");
response.setHeader("Content-Disposition", "attachment;filename=\"Classification.xml\"");

JAXBContext context = JAXBContext.newInstance(Classification.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

m.marshal(xmlToDownload, response.getOutputStream());

所以我基本上必须为 IE 做不同的事情......

关于java - 通过 ResponseEntity 下载 XML 在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18826217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com