3

ユーザーがフォームを使用して画像ファイルを Express.js Web アプリケーションにアップロード (POST) できるようにしたいと考えています。受信すると、Web アプリケーションはそれを GetChute API (画像 Web サービス) に POST します。

サーバーが一時的に画像をディスクに書き込むのは望ましくありません。代わりに、画像を変数に保存し、GetChute に送信する必要があります。

デフォルトでは、2 つの Express ミドルウェア項目 (Connect と Formidable) が、POST から自動的にディスク書き込みを行う優れた方法を提供していると思いますが、ディスク書き込みを回避できるように、それらを回避してバイトストリームに直接アクセスするにはどうすればよいでしょうか?

私より頭のいい人なら、最近似たような質問でたどり着いた解決策よりも、もっときちんとした解決策を思いつくことができると思います。

Express.js でアップロードされたファイルを gm を介してストリームし、二重書き込みを排除します

ありがとう!

4

1 に答える 1

0

リクエストを GetChute に直接ストリーミングできますか?

app.post('/upload', function(req, res) {
  var chuteReq = http.request({
    host: 'api.getchute.com',
    path: '/x/y/z',
    method: 'POST'
  }, function(chuteRes) {
    var chuteBody = '';

    chuteRes.on('data', function(chunk) {
      chuteBody += chunk;
    });

    chuteRes.on('end', function() {
      var chuteJSON = JSON.parse(chuteBody);

      // check the result and build an appropriate response.
      res.end(chuteJSON);
    });
  });

  // pipe the image data directly to GetChute
  req.pipe(chuteReq);      
});

もちろん、GetChute へのリクエストを調整することもできます。multipart/form-dataをデコードする必要があるかもしれないので注意してください。

于 2012-08-06T22:49:54.513 に答える