700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 前端导出zip格式压缩包

前端导出zip格式压缩包

时间:2021-02-15 14:30:02

相关推荐

前端导出zip格式压缩包

导入

import {saveAs } from 'file-saver'import JSZip from 'jszip'import axios from 'axios'

2.打包下载文件

//selectList 选中的数据 name //zip文件名字async handleBatchDownload(selectList, name) {const data = selectList;const zip = new JSZip();console.log("zip",zip)const cache = {};const promises = [];await data.forEach((item) => {console.log(item);// FileUrl 每个excel Urlconst promiseItem = this.getFile(item.FileUrl).then((dta) => {// dta为getFile处理过的arraybuffer格式的单个文件const file_name = item.FileName; // 处理名称zip.file(file_name, dta, {binary: true }); // 逐个添加文件cache[file_name] = dta;});promises.push(promiseItem);});Promise.all(promises).then(() => {zip.generateAsync({type: "blob" }).then((content) => {// 生成二进制流saveAs(content, name + ".zip"); // 利用file-saver保存文件this.btnLoading = false;this.notify && this.notify.close();}).catch((err) => {console.error(err);this.btnLoading = false;this.$message.error("网络出现了一点小问题,请稍后重试");});});},

获取文件的arraybuffer格式并传入进行打包准备

getFile(url) {return new Promise((resolve, reject) => {axios({method: "get",url,responseType: "arraybuffer",}).then((res) => {resolve(res.data);}).catch((error) => {reject(error.toString());});});},

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。