【问题标题】:Download and zip files in React?在 React 中下载和压缩文件?
【发布时间】:2018-12-11 16:46:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: reactjs react-redux zip zipfile jszip


    【解决方案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 添加到您 lis 的每个文件的 JSZip 中
    • 酷。我终于让 JSZip 工作了。是否可以从服务器下载文件,然后使用 JSZip 在客户端进行压缩?
    • 是的,你只需要从服务器端发出同样的ajax请求
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多