亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue實現文件批量打包壓縮下載

 更新時間:2022年07月15日 10:31:46   作者:鵬仔工作室  
這篇文章主要為大家詳細介紹了如何利用Vue實現文件批量打包壓縮下載功能,文中的實現步驟講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下

上次做了一個選擇多個數據生成多個二維碼并下載,當時項目催的緊,就簡單寫了個循環(huán)生成二維碼下載,一次性會下載很多文件,特別難整理;

剛好這次項目又遇到類似這種功能,需要一次性批量下載多個文件,那么就安排下打包下載吧!

需要用到的是file-saver、jszip兩個插件

首先,我們安裝這兩個插件,在控制臺中依次輸入下方命令執(zhí)行

npm install file-saver
npm install jszip

上方依賴安裝完成,我們在需要實現打包下載的頁面中引入這兩個插件

import JSZip from "jszip";
import FileSaver from "file-saver";

在data中,我就簡單定義一個數組 fileList ,用來存放要下載的文件鏈接

data() {
  return {
    fileList: [
      {
        name: 'logo1',
        url: 'https://duanqinghua.com/logo.png'
      },
      {
        name: 'logo2',
        url: 'http://sharedbk.com/logo.png'
      }
    ]
  }
}

接著就是在 methods 中寫下載事件了

// 點擊下載
download() {
  var blogTitle = `下載文件名字`; // 下載后壓縮包的命名
  var zip = new JSZip();
  var promises = [];
  let cache = {};
  let arrImg = [];
  for (let i = 0; i < this.appData.resources.length; i++) {
    arrImg.push({
      path: this.appData.resources[i].url, // 文件鏈接
      name: this.appData.resources[i].name // 文件名稱
    });
  }
  for (let item of arrImg) {
    // item.path為文件鏈接地址
    const promise = this.getImgArrayBuffer(item.path).then((data) => {
      // 下載文件, 并存成ArrayBuffer對象(blob)
      zip.file(item.name, data, { binary: true }); // 逐個添加文件
      cache[item.name] = data;
    });
    promises.push(promise);
  }
  Promise.all(promises).then(() => {
    zip.generateAsync({ type: "blob" }).then((content) => {
      // 生成二進制流
      FileSaver.saveAs(content, blogTitle); // 利用file-saver保存文件  自定義文件名
    });
  }).catch((res) => {
    alert("文件壓縮失敗");
  });
},
//文件以流的形式獲取(參數url為文件鏈接地址)
getImgArrayBuffer(url) {
  return new Promise((resolve, reject) => {
    //通過請求獲取文件blob格式
    let xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", url, true);
    xmlhttp.responseType = "blob";
    xmlhttp.onload = function () {
      if (this.status == 200) {
        resolve(this.response);
      } else {
        reject(this.status);
      }
    };
    xmlhttp.send();
  });
}

很多小伙伴復制完代碼使用,點擊下載后瀏覽器會報跨域問題,這個問題并非前端問題,需要后端在存儲文件的服務器中設置允許跨域,添加 Access-Control-Allow-Origin 即可!

到此這篇關于Vue實現文件批量打包壓縮下載的文章就介紹到這了,更多相關Vue文件打包壓縮下載內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于vue-cli vue-router搭建底部導航欄移動前端項目

    基于vue-cli vue-router搭建底部導航欄移動前端項目

    這篇文章主要介紹了基于vue-cli vue-router搭建底部導航欄移動前端項目,項目中主要用了Flex布局,以及viewport相關知識,已達到適應各終端屏幕的目的。需要的朋友可以參考下
    2018-02-02
  • vue實現PC端錄音功能的實例代碼

    vue實現PC端錄音功能的實例代碼

    這篇文章主要介紹了vue實現PC端錄音功能的實例代碼,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • vue組件中實現嵌套子組件案例

    vue組件中實現嵌套子組件案例

    這篇文章主要介紹了vue組件中實現嵌套子組件案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 在vue項目中 實現定義全局變量 全局函數操作

    在vue項目中 實現定義全局變量 全局函數操作

    這篇文章主要介紹了在vue項目中 實現定義全局變量 全局函數操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 使用window.open和vue router新開頁面

    使用window.open和vue router新開頁面

    這篇文章主要介紹了使用window.open和vue router新開頁面方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 通過GASP讓vue實現動態(tài)效果實例代碼詳解

    通過GASP讓vue實現動態(tài)效果實例代碼詳解

    GASP是一個JavaScript動畫庫,它支持快速開發(fā)高性能的 Web 動畫。GASP 使我們能夠輕松輕松快速的將動畫串在一起,來創(chuàng)造一個高內聚的流暢動畫序列。這篇文章主要介紹了通過GASP讓vue實現動態(tài)效果,需要的朋友可以參考下
    2019-11-11
  • vant van-list下拉加載更多onload事件問題

    vant van-list下拉加載更多onload事件問題

    這篇文章主要介紹了vant van-list下拉加載更多onload事件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue 組件的封裝之基于axios的ajax請求方法

    vue 組件的封裝之基于axios的ajax請求方法

    今天小編就為大家分享一篇vue 組件的封裝之基于axios的ajax請求方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue環(huán)境搭建簡單教程

    vue環(huán)境搭建簡單教程

    這篇文章主要介紹了vue環(huán)境搭建簡單教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue通過阿里云oss的url連接直接下載文件并修改文件名的方法

    Vue通過阿里云oss的url連接直接下載文件并修改文件名的方法

    這篇文章主要介紹了Vue通過阿里云oss的url連接直接下載文件并修改文件名的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論