gpt4 book ai didi

java - Spring MVC 文件下载 IOUtils.copy 有效,但 FileCopyUtils 无效

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

我遇到了范围问题。我正在尝试使用 Spring Controller 来下载 zip 文件。这是有效的代码片段,当用户向 url 发出 get 请求时,浏览器开始下载文件

@RequestMapping(value = "mypath/",method = RequestMethod.GET)
public void downloadFiles(@PathVariable("id") String id) {

InputStream a = new ByteArrayInputStream(fileService.get(id));
StringBuilder sb = new StringBuilder("attachment; filename=).append(id).append(".zip");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, sb.toString());
org.apache.commons.io.IOUtils.copy(a, response.getOutputStream());
response.setContentType("application/x-download");
response.flushBuffer();
}

但是...如果我用 FileCopyUtils.copy 替换 IOUtils.copy,当我点击 URL 时,浏览器只会显示文件内容而不是下载它

有人可以解释一下发生了什么吗?

最佳答案

老问题,但可能对 future 或当前的搜索者有帮助。

我目前正在研究这个问题,我已经使用 Spring MVC4 和 MongoDB 下载文件,它们都工作得很好。

response.setContentType("application/force-download");
response.setHeader("Content-Disposition", "attachment; filename=\""+ mDBGridFSFile.getFilename() +"\"");

这里 mDBGridFSFile 是 MongoDB GridFS 文件,用于包含文件内容。

这是我用来强制下载的 contentType,而不是将缓冲区转储到浏览器上并强制将其写入磁盘。

//FileCopyUtils.copy(mDBGridFSFile.getInputStream(), response.getOutputStream());

IOUtils.copyLarge(mDBGridFSFile.getInputStream(), response.getOutputStream());

我已经在我的项目中测试了它的工作原理,您的标题可能有问题。

关于java - Spring MVC 文件下载 IOUtils.copy 有效,但 FileCopyUtils 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286626/

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