在Rest API中,需要构建ZIP并下载到客户端系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Rest API中,需要构建ZIP并下载到客户端系统相关的知识,希望对你有一定的参考价值。

我有一个REST API,它需要:1。从对象创建一些Json文件2.压缩所有这些文件3.下载到客户端系统 - 无论谁访问URL。

我可以执行第1步和第2步,但是在执行第3步时,它会下载到我的服务器,但不会下载到客户端。目前我在我的本地尝试,稍后此代码移至AWS,不确定它是否也将下载到服务器或客户端本地:

第3步的代码:

public void downloadZip(String zipFileName)
{
    File file = new File(zipFileName);
    if(!file.exists()){
        System.out.println("file not found");
    }

    OutputStream out = null;
    try
    {
        out = new FileOutputStream("test_"+zipFileName);
        FileInputStream in = new FileInputStream(file);
        byte[] buffer = new byte[4096];
        int length;
        while ((length = in.read(buffer)) > 0){
            out.write(buffer, 0, length);
        }
        in.close();
        out.flush();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}
答案

试试这个,使用内容类型application/zip

 if(file.exists()){
        byte[] arr = FileUtils.readFileToByteArray(file);
        return ResponseEntity.ok().contentLength(arr.length)
                        .header(HttpHeaders.CONTENT_TYPE, "application/zip")
                        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
                        .body(arr);
} else {
        return ResponseEntity.notFound().build();
}

以上是关于在Rest API中,需要构建ZIP并下载到客户端系统的主要内容,如果未能解决你的问题,请参考以下文章

使用 REST API 上传到 Azure Blob 存储时,Zip 档案损坏

将 zip 文件从 REST 返回到客户端不弹出文件

如何测试使用邮递员提供 .zip 文件的 REST API?

Mailchimp API Put 或 Patch 使用 Delphi REST

VSTS API REST无法正确下载源

从内存中的 url 下载图像并在内存中创建 zip 存档以发送到浏览器