2017-07-25 10 views
0

ノードhttps/httpモジュールを使用してファイルをダウンロードしています。私は、ファイルを解凍するunzipモジュールを使用して、次のステップでノードhttpsはURLからファイルを取得し、解凍

https.get(url) 
.on('response', (response) => { 
    response.pipe(fs.createWriteStream(dataDir + filename)) 
} 

:コードは次のようになります。

fs.createReadStream(dataDir + filename) 
.pipe(unzip.Extract({path: dataDir})) 
.on('close',() => { something } 
.on('error',() => { catch error} 

ほとんどの場合、すべてがうまくいきます。ただし、モジュールを解凍すると次のエラーが返されることがあります。

Error: invalid signature: 0x6d74683c 

唯一の問題はファイル名です。私はURLからファイル名を取得します。これはURLの最後のパラメータです。しかし、場合によっては、正確なファイル名がURLに示されているファイル名と異なる場合もあります。例えば:

https://github.com/request/request/archive/master.zip 

URLに示されている名前はmaster.zipですが、私はそれをダウンロードする際に名前がrequest-master.zipです。

これが実際の問題ですか?もしそうなら、私はそれをどのように解決できますか?

答えて

0

ファイル名は、根本原因ではなく症状である可能性が最も高いです。 unzipモジュールはメンテナンスされておらず、多くの未解決の問題があります。これは、責任を負う可能性があり、関係なく使用すべきではありません。

代わりにdecompressまたはyauzlを試してください。また、ストリーム内のアーカイブを抽出しようとしているので、それがどのようにnot truly possibleであるかについて読むことができます。

+0

ありがとうございます。私は最初にyauzlを試みます。 – zhangjinzhou

関連する問題