我在file.zip
这样的数据库中有BLOB
。我想在Spring控制器中使用create方法在客户端下载该文件。
@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
}
如何更改此methot以便在客户端下载?
用户按下载按钮。 Methos从byte []中获取数据,用户可以下载它。
修改
我尝试了@pleft的解决方案并且工作正常。我知道 - 我使用ajax进行呼叫方法
function downloadResolution(resulutionId) {
$.ajax({
type: 'GET',
dataType: "json",
url: '/downloadResolution/' + resulutionId,
success: function (data) {
},
error: function (xhr, str) {
}
});
}
如果我使用ajax,如何实现这一点?
答案 0 :(得分:5)
您可以使用OutputStream
的{{1}}在那里写入存档字节。
e.g。
HttpServletResponse
修改强>
示例下载
response.setHeader("Content-Disposition", "attachment; filename=file.zip");
response.setHeader("Content-Type", "application/zip");
response.getOutputStream().write(archive);