Gzip文件和Angular 2
我有一些文件使用我的服务器上的gzip(.gz文件类型)存储进行压缩。Gzip文件和Angular 2
我使用服务(角2)可观察到的下载文件到客户端计算机:
this.rest.getFile(this.stlLocation).subscribe(
data => {
console.log(data);
//OK, now I have my .gz file containing a compressed JSON file.
//What do I need to do in angular 2 to decompress and read the JSON data in the file?
},
err => {
this.msgs.push({severity: 'error', summary: 'Error Message', detail: err});
}
);
我怎么能解压缩并获得普通JSON文件一旦成功下载?
更新...
谢谢荷兰Joh送我在正确的道路上。看到接受的答案。经过一番阅读后,我已经实施了以下解决方案。
据荷兰Joh:
“如果你正在下载的文件浏览器,你不应该有 做任何浏览器中添加的Accept-Encoding:‘放气’头 自动;它。在DOM/JS级别执行这个 是不必要的也不是很好的做法。“
如果您使用NGINX以下链接可以帮助你:
NGINX COMPRESSION AND DECOMPRESSION
一个巨大的感谢所有那些试图帮助不同的解决方案的其他人。我非常感谢您花时间回答我的问题。
如果将文件下载到浏览器,你不应该做任何事情。浏览器自己自动添加Accept-Encoding: 'deflate'
标题;在DOM/JS级别执行此操作既不必要也不好,因为浏览器应为您处理此问题。 GZipping是用于网络传输,编码是在请求头中处理的;浏览器应该为你解开这个。所以,你有一个文件,它应该可以用作JSON(如果使用Angular的Http
服务,你将不得不解析json,即Observable.map(res => res.json())
)。
注意:如果这个未压缩的文件低于〜1.4Kb,那么最好不要离开。无论如何,小文件将被发送到单个数据包中,而gzip只会给DOM和CPU增加一个小的开销。
如果您正在使用NPM你可以使用这样的事情: https://www.npmjs.com/package/gzipy
从用法:
//Import gzipy
var gzipy = require('gzipy');
//Compress a file
gzipy.compress('./file.txt', './file.txt.gz', function(error)
{
//Handle the error
if(error){ /* Something went wrong... */ }
console.log('File compressed!');
});
//Decompress a file
gzipy.decompress('./document.pdf.gz', './document.pdf', function(error)
{
//Handle the error
if(error){ /* Something went wrong... */ }
console.log('File decompressed');
});
谢谢你的帮助,Erica。最后,我走了另一条路,但我很欣赏你奉献给我的时间。感谢您分享知识,我相信gzipy将在未来证明有用。迪诺 – Dino
没问题。我很高兴你找到了适合你的东西:) –
使用任何gzip提取器 –
嗨拉胡尔,它是一个JavaScript库?我可以在哪里找到它? – Dino
迪诺它将被下载到你的本地系统你将如何访问它?我对最终用户 –