我相信许多朋友并不熟悉前端文件下载,并且有许多形式的下载文件。例如,后端返回文件地址。我们将地址放在标签中,然后单击以下载;对流程进行一系列操作。
有很多单一下载的解决方案,但是当我们需要分批下载文件时,我们应该如何做?
面对这种需求,我们提出了以下解决方案:
选项1:直接获取返回返回文件地址阵列,然后一一下载它们。但是每次下载文件时,浏览器都会显示更多下载任务;
选项2:文件的后端压缩被包装和压缩,然后前端只需要下载压缩文件,但这将对服务器性能产生很大的影响。
选项3:仍然获取后端返回的文件地址数组,一一下载,然后使用前端执行包装压缩。
老实说,当我提到前端包装压缩时,我和一些小型合作伙伴一样。前端包和压缩如何压缩?下面的两个出色的库可以很好地解决我们的问题。
在这里,以下是React环境的一个示例,但是其他环境中的想法和用法实际上相似,以下内容可以用作参考。
本节将简要介绍JSZIP和FileSaver.js的API和使用。
安装
JSZIP是一个用于创建,阅读和编辑.zip文件的JavaScript库,并且具有友好而简单的API。
首先,让我们实现一个简单的例子来感受这个非常有用的工具
单击“下载”按钮,我们可以获得一个名为“压缩文件”,打开压缩文件,将有一个命名的文件。
API简要介绍了一些API。
创建一个JSZIP实例:
创建一个文件:
创建一个文件夹:
同时创建一个文件夹和文件:
生成一个压缩文件:
我们可以通过或或生成:
详细的API单击官方文档
在上一个示例中,我们使用了JSZIP,还使用了FileSaver.js.filesaver.js的库,是保存在客户端上的文件的解决方案,该解决方案非常适合在客户端上生成文件。
在上一节的示例中,我们保存了文件aver.js生成的文件。
语法
例子
单击官方文件以获取更多用法
我们已经知道这两个库可以意识到我们的需求。这里有两个步骤,第一步是获取文件。第二步是打包和压缩。
这里的文件地址只是一个简单的示例,具体取决于实际开发过程中的情况。
这主要通过遍历地址数组,然后从后端通过地址获得文件,然后执行批处理压缩包装文件,最后保存压缩文件。
https://stuk.github.io/jszip/
https://github.com/eligrey/filesaver.js
通过使用jszip和filesaver.js,我们可以在后端的批处理文件上执行集成和包装压缩。这在一定程度上降低了服务器上的压力。另一方面,一次弹出的下载任务也在一定程度上改善了体验。