2017-08-04 10 views
0

私のサーバーにgzip(.gzファイルタイプ)ストアを使用してファイルを圧縮しました。Gzipファイルと角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をお願い致します。受け入れられた答えをご覧ください。少し読んだ後、私は以下の解決策を実装しました。ヨハによると

「あなたはブラウザにファイルをダウンロードする場合は、あなたが何かを する必要はありませんブラウザが受け入れ-encodingを追加します。自動的にヘッダー 『を収縮させる』;それ。 DOM/JSレベルで を実行するのは両方とも不必要であり、良い習慣ではありません。あなたはnginxのを使用している場合

次のリンクはあなたを助けることがあります。

NGINX COMPRESSION AND DECOMPRESSION

大規模が異なるソリューションを助けようとした他のすべての人に感謝します。私は本当にあなたが私の質問に答えるために取った時間を感謝します。あなたがNPMを使用している場合

+0

gzip抽出器を使用する –

+0

こんにちはRahul、それはjavascriptライブラリですか?どこで見つけることができますか? – Dino

+0

ディーノはあなたのローカルシステムにダウンロードされますどのようにそれにアクセスしますか?私はエンドユーザーについて話していた –

答えて

0

、あなたは何もする必要はありません。ブラウザ自体がAccept-Encoding: 'deflate'ヘッダーを自動的に追加します。ブラウザがあなたのためにこれを世話する必要があるので、DOM/JSレベルでこれを行うことは、両方とも不要であり、良い習慣ではありません。 GZippingはネットワーク転送のためのもので、エンコーディングはリクエストヘッダで処理されます。ブラウザはこれをアンラップする必要があります。

ファイルを持っていて、JSONとして使用できるはずです(AngularのHttpサービスを使用している場合は、jsonを解析する必要があります。つまり、Observable.map(res => res.json()))。

サイドノート:この圧縮されていないファイルが〜1.4Kb以下の場合は、ungzippedの方が良いでしょう。とにかく小さなパケットが1つのパケットで送信され、gzippingはDOMとCPUにわずかなオーバーヘッドを追加します。

+0

こんにちは、私の無知を許してください、しかし私はアプリの小さな部分を開発しています。次のようなことが起こっています:誰かがダウンロードしたいファイル(大規模なJSON)を作成し、gzipしてサーバーにアップロードしてください。私の仕事はそれらをダウンロードし、それらを解凍し、オブジェクトをファイルに保存することです。私のサービスのObservable.map(res => res.json())という行はファイルを返しませんが、res => resの結果を調べると、解凍されたファイルが見えます。私はGzip圧縮のどのレベルで正しく動作するか理解できないと思います。 – Dino

+0

こんにちは、ちょっと読んだ後、私はあなたが何を意味しているのか理解していると思うし、私の質問の「更新されたセクション」に記載された解決法を実装しました。貴重な助けをありがとうございます。 – Dino

0

は、あなたがこのようなものを使用することができます使用方法から 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'); 
}); 
+0

あなたの助けをありがとう、エリカ。結局、私は別の道をたどってきましたが、あなたが私を助けようと努力する時間を感謝します。知識を共有してくれてありがとう、私はgzipyが将来的に有用であると確信しています。 Dino – Dino

+0

問題ありません。私はあなたのために働く何かを見つけてうれしいです:) –