vue 批量下载照片,打包成zip

安装  jszip   file-saver

npm install --save jszip
npm install --save file-saver

 页面导入

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

代码部分: 

// 图片批量下载到本地
			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();
				});
			},
// 图片批量下载 
			downImg(id) {
				this.$confirm('网速太慢或图片太多时,请耐心等待~', '温馨提示', {
					confirmButtonText: '我知道了,开始下载',

					showCancelButton: false,
					type: 'success'
				}).then(() => {
					request({
						url: 'admin/index/albumPhotoUrls',
						method: 'post',
						data: {
							id
						}
					}).then(res => {
						if (res.data.state === '0') {
							console.log('相册列表', res)


							let _this = this;
							let zip = new JSZip();
							let cache = {};
							let promises = [];
							let images = res.data.data.urls
							_this.title = '正在加载压缩文件';

							for (let item of images) {
								const promise = _this.getImgArrayBuffer(item).then(data => {
									//解决之前ios 文件没有后缀名,电脑打不开的问题,默认加上png后缀,没有该问题的可去掉 这部分代码
									let file=item.split('/')[item.split('/').length-1]
									let fileType=file.split('.')
									let filename
									if(fileType.length==1){
										 filename =file+".png"//判断是ios没有后缀名的文件
									}else{
										filename=file
									}
									// --end
									zip.file(filename, data, {
										binary: true
									});
									cache[filename] = data;
								});
								promises.push(promise);
							}

							Promise.all(promises).then(() => {
								zip.generateAsync({
									type: "blob"
								}).then(content => {
									_this.title = '正在压缩';
									FileSaver.saveAs(content, '照片');
									_this.title = '压缩完成';
								});
							}).catch(res => {
								_this.$message.error('文件压缩失败');
							});


						}
					})

				})
			},		

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值