0

私はNodeJSの初心者です。pipe() メソッドを使用してクライアントにデータをストリーミングできることはわかっています。

ここにコードのスニペットがあります

 router.get('/archive/*', function (req, res) {

        var decodedURI = decodeURI(req.url);
        var dirarr = decodedURI.split('/');
        var dirpath = path.join(dir, dirarr.slice(2).join("/"));
        console.log("dirpath: " + dirpath);
        var archive = archiver('zip', {
            zlib: {level: 9} // Sets the compression level.
        });
        archive.directory(dirpath, 'new-subdir');
        archive.on('error', function (err) {
            throw err;
        });
        archive.pipe(res)
        archive.on('finish', function () {
            console.log("finished zipping");
        });
        archive.finalize();

    });

get リクエストを使用すると、圧縮されたファイルがダウンロードされましたが 、拡張子はありません。書き込みストリームを応答にパイプしているので、それはわかっています。とにかく .zip 拡張子でパイプしますか? または、zipファイルをHDDにビルドせずにzipファイルを送信するにはどうすればよいですか?

4

2 に答える 2

1

res.attachment()ダウンロードのファイル名とその MIME タイプの両方を設定するために使用できます。

router.get('/archive/*', function (req, res) {
  res.attachment('archive.zip');
  ...
});
于 2017-07-02T13:33:40.933 に答える