vue前台导出zip文件_vue将文件/图片批量打包下载

本文介绍了如何在Vue项目中使用jszip和file-saver库实现从URL获取图片并将其批量打包为zip文件供用户下载。首先通过npm安装所需插件,然后在Vue组件中导入并使用它们。定义一个方法`getImgArrayBuffer`将URL转换为blob格式的数据,再通过`BatchDownload`方法遍历图片URL数组,将每个图片添加到zip文件中,最后生成blob对象并使用file-saver保存为zip文件。
摘要由CSDN通过智能技术生成

安装插件

npm install jszip

npm install file-saver在vue文件中使用

import JSZip from'jszip'

import FileSaver from'file-saver'

2.调用方法

//通过url 转为blob格式的数据

getImgArrayBuffer(url){

let _this=this;

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();

});

},

3. 打包

// imgDataUrl 数据的url数组

BatchDownload(){

let _this = this;

let zip = new JSZip();

let cache = {};

let promises = [];

_this.title = '正在加载压缩文件';

for (let item of this.imgDataUrl) {

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 => {

_this.title = '正在压缩';

// 生成二进制流

FileSaver.saveAs(content, '数据包'); // 利用file-saver保存文件 自定义文件名

_this.title = '压缩完成';

});

}).catch(res=>{

_this.$message.error('文件压缩失败');

});

},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值