LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【JavaScript】WEB页面纯JS实现批量下载文件为压缩包

admin
2023年8月24日 21:44 本文热度 471

有一个需求,是列表里面有很多图片或者pdf文件的url,用户想要一个批量下载,点击按钮后,把列表的这些文件全部都下载下来,并且是一个压缩包,包里面包含那些url对应的文件。

1.  <!doctype html>

2.  <html lang="en">

3.  <head>

4.  <meta charset="UTF-8">

5.  <title>doc</title>

6.  </head>

7.  <body>

8.   <button onclick='packageImages()'>批量下载</button>

9.   

10.<!-- 下面是需要用到的js -->

11.<script src="https://cdn.staticfile.org/jquery/3.6.1/jquery.min.js"></script>

12.<script src="https://cdn.staticfile.org/jszip/3.10.1/jszip.min.js"></script>

13.<script src="https://cdn.staticfile.org/FileSaver.js/2.0.5/FileSaver.min.js"></script>

14.<script src="https://cdn.staticfile.org/axios/1.2.0/axios.min.js"></script>

15.

16.<script>

17.   function packageImages() {

18.      var imgsSrc = ['https://img-home.csdnimg.cn/images/20201124032511.png', 'https://csdnimg.cn/medal/qixiebiaobing4@240.png']; // 这里可以替换为自己的逻辑,比如从哪里获取之类的

19.

20.      var promises =[]

21.      const zip = new JSZip();

22.      for(let item of imgsSrc){

23.          let axios = getFile(item).then(({data})=>{

24.             let fileName = getFileName(item) //文件名

25.             zip.file(fileName, data, {binary: true});

26.          })

27.          promises.push(axios)

28.      }

29.

30.      Promise.all(promises).then(() => {

31.          if (Object.keys(zip.files).length > 0) {

32.             zip.generateAsync({type: 'blob'}).then((blob) => {

33.                 saveAs(blob, 'files.zip');

34.                 console.log('批量下载成功')

35.             });

36.          } else {

37.             console.log('下载全部失败')

38.          }

39.      });

40.     }

41.    

42.     function getFileName(filePath){

43.      var startIndex = filePath.lastIndexOf("/");

44.      if(startIndex != -1)

45.          return filePath.substring(startIndex+1, filePath.length).toLowerCase();

46.      else return "";

47.     }

48.

49.     function getFile(url){

50.      return new Promise((resolve, reject) => {

51.                 axios({

52.                    url,

53.                    method: 'GET',

54.                    responseType: 'blob',

55.                 })

56.                 .then((data) => {

57.                    resolve(data);

58.                 })

59.                 .catch((err) => {

60.                    reject(err.toString());

61.                 });

62.      });

63.     }

64.</script>

65.</body>

66.</html>


该文章在 2023/8/24 21:47:05 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved