我正在使用javascript zip.js库。我已经搜索了所有地方,但是找不到添加多个文件到zip的示例。
这是我的代码,但它生成了一个“损坏”的zip文件。
有什么想法让它工作吗? :)
这是我的代码,但它生成了一个“损坏”的zip文件。
var len = results.rows.length, i;
var k=1;
zip.createWriter(new zip.BlobWriter(), function(writer) {
for (i = 0; i < len; i++){
// get the image url from a sqlite request
url = results.rows.item(i).url;
var img = new Image();
img.onload = function() {
var a = document.createElement('a');
a.href = this.src;
var filename= a.pathname.split('/').pop(); // filename.php
timest = new Date().getTime();
// use a TextReader to read the String to add
writer.add(timest+".jpg", new zip.Data64URIReader(getBase64Image(img)), function() {
// onsuccess callback
k++;
if(k==len){
setTimeout(function(){
writer.close(function(blob) {
// blob contains the zip file as a Blob object
$('#test').attr("href", window.URL.createObjectURL(blob));
$('#test').attr("download", "woeii.zip");
});
},1000);
}
}, function(currentIndex, totalIndex) {
// onprogress callback
});
};
img.src = url;
}
});
有什么想法让它工作吗? :)
onload
函数的异步执行,它仍然会多次保存最后一张图片。我使用匿名函数解决了这个问题,将其包裹在img.onload
周围。再次感谢您:) 如果没有您的帮助,我可能会卡在那里几天! - Paul Fournel