我目前正在使用jszip, jszip-utils, and FileSaver
压缩并下载多个PDF文件。
self.createZip = function () {
var docs = self.list.filteredItems();
var zip = new JSZip();
var count = 0;
var zipFilename = "zipFilename.zip";
docs.forEach(function (item) {
var filename = item.formDesc() + "_" + item.id() + ".pdf";
// loading a file and add it in a zip file
JSZipUtils.getBinaryContent('../career/document/StreamFile/?path=' + item.fileName(), function (err, data) {
if (err) {
throw err; // or handle the error
}
zip.file(filename, data, { binary: true });
count++;
if (count == docs.length) {
zip.generateAsync({ type: 'blob' }).then(function (content) {
try {
saveAs(content, zipFilename);
} catch (e) {
console.log(e);
}
});
}
});
});
此功能目前适用于除IE11以外的所有最新浏览器。在IE11中获取所有文件,但在saveAs上挂起。
答案 0 :(得分:2)
在SaveAs语句后尝试以下操作以清除缓冲区
content = null;