import axios from 'axios'
import JSZip from 'jszip' //打包壓縮必備,參考鏈接https://stuk.github.io/jszip/
import FileSaver from 'file-saver' //文件保存至本地,參考鏈接https://github.com/eligrey/FileSaver.js/
// 批量下載 async handleBatchDownload(selectImgList){ const self = this const data = selectImgList; const zip = new JSZip() const cache = {} const promises = [] await data.forEach( (item,key) => { const promise = self.getFile(item).then(dta => { // 下載文件, 並存成ArrayBuffer對象 // 獲取文件名 const file_name = self.nameOptions[key].value + '.jpg' zip.file(file_name, dta, {binary: true}) // 逐個添加文件 cache[file_name] = dta }) promises.push(promise) }) Promise.all(promises).then(() => { zip.generateAsync({type: "blob"}).then(content => { // 生成二進制流 FileSaver.saveAs(content, this.nameOptions[0].value + ".zip") // 利用file-saver保存文件 this.loading = false }).catch( err=>{ this.loading = false this.$notify({ message: "網絡出了點小問題,請稍后再試!", type: "error" }); }) }) }, // 下載圖片 getFile(url) { return new Promise((resolve, reject) => { axios({ method: 'get', url, responseType: 'arraybuffer' }).then(res => { // console.log(res) resolve(res) }).catch(error => { console.log(error) reject(error.toString()) }) }) },
