在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 API?