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())
})
})
},