有多个文件或图档利用checkbox勾选後,可以直接点选下载按钮。此时网站会将刚刚所选择的项目打包成一包zip下载到你的电脑中。
npm install jszip
npm install file-saver
选择需要的图档後,按下载,打包图档至zip并产出文件告知被选去的图档id
code demo 连结
这边就不一一放code,我们来看看最核心的部分
//选择图档,点击下载按钮後
download() {
const _self = this;
this.selectedList = [];
// 取得被选取的列表
this.selectedList = this.data.filter(item => item.isCheck);
// create zip
const zip = new JSZip();
// - create folder
let note = zip.folder("note");
let selectedIdNum = '';
_self.selectedList.map(item => selectedIdNum += item.id + ',');
// - 建立文件,并给予动态的content
let txt = _self.selectedList.length > 0 ? `被选择的图档id:${selectedIdNum}`: '没有被选择的图档'
note.file("note.txt", txt);
//将选取的图档,转为base64後,加到zip中
_self.selectedList.forEach((item, index) => {
//呼叫转换image to base64 的 function
_self.getBase64Image(`https://fakeimg.pl/${item.img}`,function(dataUrl) {
let _url = dataUrl.replace('data:image/png;base64,', '')
//将转好base64的内容,加入zip党
zip.file(`${item.id}.png`, _url,{base64: true});
if(index === _self.selectedList.length-1){
//将所有档案打包
zip.generateAsync({type:"blob"})
.then(function(content) {
// 储存这个zip到local端
saveAs(content, "example.zip");
});
}
}, 'image/png')//end: getBase64Image
})
},
jszip真的是蛮方便好用的插件可以做到将档案打包zip,可能依照需求还有json或其他类型档案,不过今天就用简单的范例,跟大家分享,如果要透过网站做到zip档案的作法罗
<<: EP23 - 持续部署使用 Octopus Deploy 三部曲,新增 Octopus 专案及调整 Jenkins 环境
昨天我们在专案里导入了 detekt 静态分析套件,只要执行 $ gradle detekt 就可以...
Day 20 - 重新检视 mAP, F1, IoU, Precision-Recall 精准度 A...
今天要来介绍如何将自己撰写的元件包成元件类别库,并提供给 Blazor Server 与 Blazo...
接续上一次的内容,今天一样会用较为简单的叙述去介绍与分享SQL的简易语法与函数。(大写为内建语法) ...
React 运作原理 在原生的 JavaScript 里,我们会操作 DOM 来修改网页程序码,但这...