管理後臺須要批量導出二維碼圖片ios
選擇相應的圖片批量導出或直接批量導出並壓縮在一個文件夾裏git
1.先將選中二維碼的地址存在一個數組中
2.依次請求圖片並將其下載
3.後用jszip壓縮文件
4.最後用file-saver生成文件github
實現的代碼以下axios
import axios from 'axios' import JSZip from 'jszip' import FileSaver from 'file-saver' getFile = (url) => { return new Promise((resolve, reject) => { axios({ method: 'get', url, responseType: 'arraybuffer' }).then(data => { resolve(data.data) }).catch(error => { reject(error.toString()) }) }) }; } // 批量下載 handleBatchDownload = async(selectImgList) => { const data = selectImgList; const zip = new JSZip() const cache = {} const promises = [] await data.forEach(item => { const promise = this.getFile(item).then(data => { // 下載文件, 並存成ArrayBuffer對象 const arr_name = item.split("/"); let file_name = arr_name[arr_name.length - 1] // 獲取文件名 // if (file_name.indexOf('.png') == -1) { // file_name = file_name + '.png' // } zip.file(file_name, data, { binary: true }) // 逐個添加文件 cache[file_name] = data }) promises.push(promise) }) Promise.all(promises).then(() => { zip.generateAsync({ type: "blob" }).then(content => { // 生成二進制流 FileSaver.saveAs(content, "photo.zip") // 利用file-saver保存文件 }) }) };
1.插件file-saver的使用跨域
2.插件jszip的使用數組
file-saver地址
JSZip參考文檔地址promise