最近项目需求是要将echart图片批量下载下来并且打包成zip包
咨询公司大佬以后给了个解决办法 用jsZip这个工具
git地址是:https://stuk.github.io/jszip/
简单好用非常好理解,只需要引入jsZip以后将要下载的图片的base64码、图片名称、图片类型等传入就好了
具体代码附上
import JSZip from 'jszip';
const zip = new JSZip();// 实例化JSZip
let img = zip.folder("images");//存放压缩包的文件夹名称
if( checkedList.length != 0){
//循环遍历checkedList 当item==echartsRefMap的key 的时候获取到 对应key 的值 然后用 echart提供的方法 getDataURL() 进行下载 ,
let fileName = '';
let imageStr= '';
for ( let i=0; i< checkedList.length ;i++ ){
for ( let key of echartsRefMap.keys() ){
if(checkedList[i] == key ){
//获取到echart实例
fileName = titleNameList.get(checkedList[i]);
imageStr = echartsRefMap.get(checkedList[i]).getDataURL({ type: 'png', backgroundColor: '#fff' }).replace('data:image/png;base64,', '');
img.file(`${fileName}.png`, imageStr, {base64: true});//一定要写上.png不然下载的格式不对
}
}
}
zip.generateAsync({type:"blob"})
.then(function(content) {
// see FileSaver.js
saveAs(content,`基本情况况分析.zip`);//一定要先写上.zip不然格式不对
});
}