gpt4 book ai didi

java - 如何从客户端的 Controller 下载 zip 文件? Spring Boot

转载 作者:行者123 更新时间:2023-11-29 07:32:18 24 4
gpt4 key购买 nike

我在数据库中有 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,如何实现这一点?

最佳答案

您可以使用 HttpServletResponseOutputStream 将您的存档字节写入那里。

例如

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/

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