zoukankan      html  css  js  c++  java
  • JavaScript实现fileSave文件下载和jszip打包下载

    下列使用.webm音频文件进行举例:

    文件下载

    npm下载file-saver

    npm install file-saver
    

    代码:

    import { saveAs } from "file-saver";
    
    async function downloadAudio(src: string, name: string) {
      const blob = await getBlob(src);
      saveAs(blob, name + ".webm");
    }
    
    function getBlob(url: string): Promise<Blob> {
      return new Promise(resolve => {
        const xhr = new XMLHttpRequest();
        xhr.open("GET", url, true);
        xhr.responseType = "blob";
        xhr.onload = () => {
          if (xhr.status === 200) {
            resolve(xhr.response);
          }
        };
        xhr.send();
      });
    }
    

    打包下载

    npm install jszip
    

    函数

    import JSZip from "jszip";
    import { saveAs } from "file-saver";
    
      //data=[{name:xx, ..., src:"blob:xxx"}{...}]
      downAllRecord(data: any) {
        let zip = new JSZip();//初始化
        for (let i = 0; i < data.length; i++) {
          let obj = data[i];
          zip.file(obj.name + ".webm", getBlob(obj.src));
        }
        zip.generateAsync({ type: "blob" }).then(function(content: Blob) {
          //使用blob下载zip
          saveAs(content, "Sound.zip");
          //这里也可以写成使用File下载zip,把blob转换为File
          const filesZip = new File([content], "Sound.zip", { type: "application/zip" });
          saveAs(filesZip);
        });
      }
    
        function getBlob(url: string): Promise<Blob> {
            return new Promise(resolve => {
            const xhr = new XMLHttpRequest();
            xhr.open("GET", url, true);
            xhr.responseType = "blob";
            xhr.onload = () => {
              if (xhr.status === 200) {
                resolve(xhr.response);
              }
            };
            xhr.send();
          });
        }
    

    --
    参考:前端通过url下载文件时进行重命名(fileSaver部分源码解析)

  • 相关阅读:
    结对编程作业——毕设导师智能匹配
    结对项目之需求分析与原型设计
    Excel绘制之甘特图
    Excel绘图之数据波动条形图
    Excel绘图之漏斗图
    Excel绘图之四象限散点图
    软件工程实践总结
    发送手机验证码
    个人作业——软件产品案例分析
    用例图
  • 原文地址:https://www.cnblogs.com/xym4869/p/13367433.html
Copyright © 2011-2022 走看看