2017-07-02 14 views
0

私はNodeJSの新機能です。私は、pipe()メソッドを使用してクライアントにデータをストリームできることを知っています。ここで拡張機能を連結してWriteStreamをパイプする方法は?

はコード

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ファイルを作成せずにzipファイルを送信するにはどうすればよいですか?

答えて

1

な方法の一つは、のために

res.setHeader("Content-Type", "application/zip"); 
res.setHeader('Content-disposition' ,'attachment; filename=downlaod.zip'); 

、配管の前にヘッダを変更することです与えられたコード

router.get('/archive/*', function (req, res) { 
     var decodedURI = decodeURI(req.url); 
     var dirarr = decodedURI.split('/'); 
     var dirpath = path.join(dir, dirarr.slice(2).join("/")); 
     var output = fs.createWriteStream(__dirname + '/7.zip'); 
     var archive = archiver('zip', { 
      zlib: {level: 9} // Sets the compression level. 
     }); 
     archive.directory(dirpath, 'new-subdir'); 
     archive.on('error', function (err) { 
      throw err; 
     }); 
     res.setHeader("Content-Type", "application/zip"); 
     res.setHeader('Content-disposition' ,'attachment; filename=downlaod.zip'); 
     archive.pipe(res); 
     archive.finalize(); 

    }); 
1

あなたは両方にres.attachment()を使用することができますが、ダウンロードのファイル名を設定し、また、そのMIMEタイプ:

router.get('/archive/*', function (req, res) { 
    res.attachment('archive.zip'); 
    ... 
}); 
+0

しかし、私はhddにzipファイルを作成したくありません。私は、アーカイバモジュールの結果を応答 –

+0

としてパイプ処理したいだけです。慎重にリンクしたドキュメントをお読みください。すべての 'res.attachment'はHTTPヘッダーを設定します。 – robertklep

+0

さて、私はそれを得た。添付ファイルを送信する前に、そのコンテンツタイプとコンテンツの処理権を変更しますか? –

関連する問題