VUE+jszip如何實現(xiàn)下載多個文件導(dǎo)出為一個zip格式
更新時間:2024年03月08日 09:32:05 作者:前端小小白~
這篇文章主要介紹了VUE+jszip如何實現(xiàn)下載多個文件導(dǎo)出為一個zip格式方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
VUE+jszip下載多個文件導(dǎo)出為一個zip格式
項目需求:
將多個文件/圖片導(dǎo)出為一個zip格式壓縮包,點擊<下載全部附件>按鈕下載上面三個文件

1、安裝jszip和file-saver插件
npm install jszip npm install file-saver
2、在所需頁面引入
import JSZip from "jszip"; import FileSaver from "file-saver";
3、模擬fileList數(shù)組
//fileList模擬文件數(shù)組
export default {
name: "notice-list",
data() {
return {
fileList: [
{
fileName: '3.jpg',
feilePath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
},
{
fileName: '5.jpg',
feilePath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
},
{
fileName: '測試2.doc',
feilePath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
}
],
}
}
}
4、在methods中定義方法
// 下載全部附件 downloadBtn<下載全部附件>按鈕綁定事件
downloadBtn() {
var blogTitle = `全部附件`; // 下載后壓縮包的名稱
var zip = new JSZip();
var promises = [];
let cache = {};
for (let item of this.fileList) {
// item.feilePath為文件鏈接地址
// item.fileName為文件名稱
if(item.feilePath) {
const promise = this.getImgArrayBuffer(item.feilePath).then((data) => {
// 下載文件, 并存成ArrayBuffer對象(blob)
zip.file(item.fileName, data, { binary: true }); // 逐個添加文件
cache[item.fileName] = data;
});
promises.push(promise);
} else {
// feilePath地址不存在時提示
alert(`附件${item.fileName}地址錯誤,下載失敗`);
}
}
Promise.all(promises).then(() => {
zip.generateAsync({ type: "blob" }).then((content) => {
// 生成二進制流
FileSaver.saveAs(content, blogTitle); // 利用file-saver保存文件 blogTitle:自定義文件名
});
}).catch((res) => {
alert("文件壓縮失敗");
});
},
//文件以流的形式獲?。▍?shù)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 (xmlhttp.status == 200) {
resolve(xmlhttp.response);
} else {
reject(xmlhttp.response);
}
};
xmlhttp.send();
});
},
5、復(fù)制粘貼可用
看過其它教程有一部分版本都是存在錯誤的,所以修改了一部分
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vant Uploader實現(xiàn)上傳一張或多張圖片組件
這篇文章主要為大家詳細介紹了Vant Uploader實現(xiàn)上傳一張或多張圖片組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
vue3配置代理實現(xiàn)axios請求本地接口返回PG庫數(shù)據(jù)
這篇文章主要為大家詳細介紹了vue3配置代理實現(xiàn)axios請求本地接口返回PG庫數(shù)據(jù)的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-03-03
Vue實現(xiàn)戶籍管理系統(tǒng)戶籍信息的添加與刪除方式
這篇文章主要介紹了Vue實現(xiàn)戶籍管理系統(tǒng)戶籍信息的添加與刪除方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
el-tab設(shè)置默認激活的標簽頁實現(xiàn)步驟
這篇文章主要給大家介紹了關(guān)于el-tab設(shè)置默認激活的標簽頁實現(xiàn)步驟,文中通過代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09

