首页 > 解决方案 > 在 React 中下载和压缩文件?

问题描述

我有一个存储用户咨询的应用程序。咨询有关于用户的数据,并附有咨询的文件。我的目标是将所有附加到咨询的文件以压缩包的形式返回给用户。很直接。

我们有 5 秒的超时限制。最初我以为我们可以下载文件并将它们压缩到服务器端。这样我就可以创建一个新的端点,将 zip 返回给用户。但由于 5 秒超时,这可能行不通。

所以我正在考虑在客户端下载和压缩文件。前端内置在 React 中,我一直在研究使用JSZip。尽管我发现的几乎所有使用 JSZip 的东西都在服务器端使用它。

是否可以使用 React 在客户端下载和压缩文件?有我可以使用的图书馆吗?或者这一切都应该在服务器端?

标签: reactjsreact-reduxzipzipfilejszip

解决方案


您可以在客户端使用 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 来响应下载你的文件


推荐阅读