第一步、安装依赖
npm install jszip file-saver
第二步、引入方法:
import JSZip from'jszip'
import FileSaver from'file-saver'
第三步、按钮点击方法
downLoadUrl对象属性: file:下载链接 type: 文件类型
2.依赖方法
getFile(url){
return new Promise((resolve, reject) => {
this.axios({
method:'get',
url,
responseType: 'blob'
}).then(data => {
resolve(data)
}).catch(error => {
reject(error.toString())
})
})
},
// 打压缩包下载
## dataUrl:[{url,file_name}]
handleBatchDownload(dataUrl) {
let _this = this;
const zip = new JSZip() // 创建一个JSZip实例
const cache = {}
const promises = []
dataUrl.forEach(item => {
const promise = _this.getFile(item.url).then(data => { // 下载文件, 并存成ArrayBuffer对象
let file_name = item.file_name // 获取文件名(数组最后一项)
zip.file(file_name, data, { binary: true }) // 逐个添加文件
cache[file_name] = data
})
promises.push(promise)
})
Promise.all(promises).then(() => {
zip.generateAsync({type:"blob"}).then(content => { // 生成二进制流
// 利用file-saver保存文件 _this.fileTableTitle是我压缩包名字
FileSaver.saveAs(content, _this.title + ".zip")
})
})
}
}
评论区