在React中如何下载并压缩文件?

3
我有一个应用程序,存储用户的咨询。咨询包含有关用户的数据,并附有与咨询相关联的文档。我的目标是将所有附加到咨询的文档打包成zip文件返回给用户。非常简单明了。
我们有5秒超时限制。最初我想我们可以在服务器端下载文件并将它们压缩成zip文件。这样我就可以创建一个新的端点将zip文件返回给用户。但由于5秒超时限制,这种方法可能行不通。
因此,我正在研究在客户端下载和压缩文件。前端使用React构建,我一直在研究使用JSZip。虽然几乎所有使用JSZip的内容都是在服务器端使用。
使用React能否在客户端下载和压缩文件?是否有可以使用的库?或者这些都应该在服务器端完成?
1个回答

1
您可以在客户端使用JsZip。例如,如果您想下载一张图片,您需要它的url。然后,使用axios发送请求。就像这样:
request = (currentUrl: string): Promise<void> => axios({
    url: currentUrl,
    method: 'GET',
    responseType: 'blob',
}).then((response) => {
    const url: string = window.URL.createObjectURL(new Blob([response.data]));
});

然后使用axios响应中提供的URL下载您的文件


要在客户端使用Jszip,对您想要压缩的文件列表进行映射,并将response.data添加到您的JSZip中的每个文件。 - Sinane
太棒了,我终于让JSZip工作了。是否可能使用JSZip从服务器下载文件,然后在客户端上进行压缩? - Arturo Aguila
是的,你只需要从服务器端发起相同的ajax请求。 - Sinane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接