我已下载文件,然后将所有文件从服务器保存到zip:
const zipFile: JSZip = new JSZip();
for (let i = 0; i < sessionIds.length; i++) {
this.getReport(id).toPromise()
.then(
(res) => {
zipFile.file(res, 'test.xls', { type: 'application/vnd.ms-excel' });
});
}
zipFile.generateAsync({ type: 'Blob' })
.then((content) => {
saveAs(content, 'content.zip');
});
但是生成的content.zip是空的,它没有将任何xls文件保存到此。如果我逐个接收xls文件,它就可以了。请帮我将所有文件保存到.zip。
答案 0 :(得分:0)
在将任何报告添加到jsZip之前尝试生成zip。
在调用zipFile.generateAsync
之前,您必须等待下载所有报告doc:forkjoin
所以试试这个:
import "rxjs/add/observable/forkJoin";
...
const zipFile: JSZip = new JSZip();
const reportObs: Observable<any>[] = sessionIds.map(id => {
return this.getReport(id).map(res => {
zipFile.file(res, 'test.xls', { type: 'application/vnd.ms-excel' });
});
});
Observable.forkJoin(reportObs).subscribe(() => {
zipFile.generateAsync({ type: 'Blob' })
.then((content) => {
saveAs(content, 'content.zip');
});
});