如何通过 spring 控制器提供大文件供下载?我关注了一些关于类似主题的讨论:
但是对于 300mb - 600mb 的大文件,这些解决方案失败了。我在最后一行收到 OutOfMemoryException :
@RequestMapping(value = "/file/{dummyparam}.pdf", method = RequestMethod.GET, produces=MediaType.APPLICATION_OCTET_STREAM_VALUE)
public @ResponseBody byte[] getFile(@PathVariable("dummyparam") String dummyparam, HttpServletResponse response) {
.
.
InputStream is = new FileInputStream(resultFile);
response.setHeader("Content-Disposition", "attachment; filename=\"dummyname " + dummyparam + ".pdf\"");
.
.
return IOUtils.toByteArray(is);
我的(天真的)假设是 IOUtils 甚至可以处理大文件,但这显然不会发生。有什么方法可以在下载过程中将文件拆分成块?文件通常约为 300 - 600mb 大。最大并发下载数估计为 10。
简单的方法是将文件链接为 webserver 目录中的静态内容,但我们想尝试在我们的 Spring 应用程序中执行此操作。