2017-07-19 24 views
0

いくつかのreadeableStreamをwritableStreamに圧縮したいと思う。 目的はメモリ内のすべてを行い、ディスク上に実際のzipファイルを作成しないことです。そのためnode.js - 出力がバッファであるところでアーカイバを使用する

私はアーカイバ

 let bufferOutput = Buffer.alloc(5000); 
     let archive = archiver('zip', { 
      zlib: { level: 9 } // Sets the compression level. 
     }); 
     archive.pipe(bufferOutput); 
     archive.append(someReadableStread, { name: test.txt}); 
     archive.finalize(); 

を使用している私はラインarchive.pipe(bufferOutput);上のエラーを取得します。

これはエラーです:「dest.onは関数ではありません」

私が間違って何をやっていますか? Thxを

UPDATE

私はテストやZIPファイルの次のコードを実行しているが適切に作成されていません。私は何が欠けていますか?

const fs = require('fs'), 
    archiver = require('archiver'), 
    streamBuffers = require('stream-buffers'); 

let outputStreamBuffer = new streamBuffers.WritableStreamBuffer({ 
    initialSize: (1000 * 1024), // start at 1000 kilobytes. 
    incrementAmount: (1000 * 1024) // grow by 1000 kilobytes each time buffer overflows. 
}); 

let archive = archiver('zip', { 
    zlib: { level: 9 } // Sets the compression level. 
}); 
archive.pipe(outputStreamBuffer); 

archive.append("this is a test", { name: "test.txt"}); 
archive.finalize(); 

outputStreamBuffer.end(); 

fs.writeFile('output.zip', outputStreamBuffer.getContents(), function() { console.log('done!'); }); 

答えて

1

Aバッファが、これは何を見ていることはゴミのように見えるだろうzip形式のデータであるためである、あなたはゴミを見ている理由についてはhttps://www.npmjs.com/package/stream-buffers

+0

Thx Daveさん、もしあなたが助けてくれると助けになるならば、私は追加質問を追加しました –

1

のようなものを必要とし、ストリームではありません。

ジップが機能しているかどうかを確認するには、もう一度解凍して、出力が入力と一致するかどうかを確認します。

+0

"outputStreamBuffer.getContents()。pipe(output);" procされません –

+1

ああ、もう一度 'outputStreamBuffer.getContents()'はあなたにストリームを与えないので、 'pipe()'関数はありません。 'fs.writeFile( 'output.zip'、outputStreamBuffer.getContents()、function(){console.log( 'done!');});' –

+0

umm ...まだ私のために働いていません。私はあなたが一見を持つことができる場合は私の質問を更新しました。あなたの助けをたくさんthx –

関連する問題