2

NodeJs(expressJs)とモジュールを使用してarchiverzipファイルをクライアントにストリーミングしているため、最終的なZIPファイルはサーバーストレージに存在しません(streaming zip serving)が、zipが原因で出力ファイルのサイズを取得できないという問題がありますプロセスはリアルタイムで発生します。

コード :

var archiver = require('archiver');
var files = ["file1","file2"];
var zipper = archiver('zip');

zipper.on('error', function(err) {
res.status(500).send({
    error: err.message
});
});

res.attachment('output.zip');
res.setHeader('Content-Type', 'application/zip');
zipper.pipe(res);
files.forEach(f => {
zipper.file(f, {
    name: f
});
});

zipper.finalize();
4

1 に答える 1

1

"data"読み取り可能なストリームでイベントをリッスンしました。ここで、zipper は読み取り可能なストリームであるため、各チャンクのサイズを加算することで全体のサイズを計算できます。

var sizeOfZipFile = 0;
zipper.on('data', (chunk) => {
 sizeOfZipFile += chunk.length 
});
console.log(sizeOfZipFile) //logs the size of the zip file
于 2018-02-19T14:10:38.557 に答える