在DOM /客户端解压缩并验证文件

时间:2018-08-26 18:50:51

标签: angular typescript file zip compression

我希望向与解压缩文件有关的angular 6站点添加功能。基本上,用户可以上传文件。然后,我想检查该文件以查看它是否为zip文件,如果是,请解压缩该文件并在客户端的浏览器中使用数据。有人知道我可以使用的现有工具吗?或对如何解决此问题有建议?预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用npm install jszip

要安装它:

使用npm:bower install Stuk/jszip
有凉亭:public downloadAllFiles() { console.log("Downloading All Files"); var fileName = this.defaultDataService.defaultDataBase + "-" + this.selectedYear.path + ".zip"; var zip = new JSZip(); var year = zip.folder(this.selectedYear.path); for (var i = 0; i < this.selectedTypes.length; i++) { var subDir = year.folder(this.selectedTypes[i].path); for (var j = 0; j < this.selectedTypes[i].pdfList.length; j++) { subDir.file(this.selectedTypes[i].pdfList[j].name + ".pdf", this.createPdfBlob(this.convertBase64ToBytes(this.selectedTypes[i].pdfList[j].bytes))); } } zip.generateAsync({ type: "blob" }) .then(function (blob) { FileSaver.saveAs(blob, fileName); }); } convertBase64ToBytes(data: string) { let byteCharacters = atob(data); let byteNumbers = new Array(byteCharacters.length); for (var i = 0; i < byteCharacters.length; i++) { byteNumbers[i] = byteCharacters.charCodeAt(i); } let byteArray = new Uint8Array(byteNumbers); return byteArray; } createPdfBlob(src: any) { const byteArrays = []; byteArrays.push(src); return new Blob(byteArrays, { type: 'application/pdf' }); }

从字节数组创建Zip

self.traceButton = Button(self.main_inner_frame,text="Trace",
command= lambda: Second.printSecondLine())

这是一篇有关使用angularJS的库的文章:https://onehungrymind.com/zip-parsing-jszip-angular/

这个stackoverflow问题可能也有帮助:Using jszip with angular 2