如何在客户端从控制器下载zip文件?春天的靴子

时间:2016-11-11 08:37:38

标签: java arrays file spring-mvc spring-boot

我在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,如何实现这一点?

1 个答案:

答案 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);