作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在数据库中有 file.zip
,如 BLOB
。我想在 Spring Controller 中创建方法以在客户端下载此文件。
@RequestMapping(value = "/downloadResolution/{resolutionId}", method = RequestMethod.GET)
public void downloadResolution(@PathVariable("resolutionId") Long resolutionId, HttpServletResponse response) {
Resolution resolution = resolutionService.findOne(resolutionId);
ResolutionArchive resolutionArchive = resolution.getResolutionArchive();
if (resolutionArchive == null) return;
byte[] archive = resolutionArchive.getArchive();
//this byte[] archive - my zip file from db
}
如何更改此方法以便在客户端下载?
用户按下下载按钮。 Methos从数据库中获取byte[]中的数据,用户可以下载。
编辑
我尝试了@pleft 的解决方案并且有效。我知道 - 我使用 ajax 调用方法
function downloadResolution(resulutionId) {
$.ajax({
type: 'GET',
dataType: "json",
url: '/downloadResolution/' + resulutionId,
success: function (data) {
},
error: function (xhr, str) {
}
});
}
如果我使用 ajax,如何实现这一点?
最佳答案
您可以使用 HttpServletResponse
的 OutputStream
将您的存档字节写入那里。
例如
response.setHeader("Content-Disposition", "attachment; filename=file.zip");
response.setHeader("Content-Type", "application/zip");
response.getOutputStream().write(archive);
编辑
示例下载
@RequestMapping(value = "/downloadResolution/{resolutionId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void downloadResolution(@PathVariable("resolutionId") Long resolutionId, HttpServletResponse response) throws IOException {
String test = "new string test bytes";
response.setHeader("Content-Disposition", "attachment; filename=file.txt");
response.getOutputStream().write(test.getBytes());
}
关于java - 如何从客户端的 Controller 下载 zip 文件? Spring Boot ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40544063/
我是一名优秀的程序员,十分优秀!