2016-06-25 6 views
0

翻訳のためにサーバに投稿するオーディオファイルがあります。私は郵便配達員でリクエストを作成することができましたが、このサーバーにファイルを書き込む方法はわかりません。ノードJSバイナリファイルを別のサーバにアップロードする

var http = require("https"); 

var options = {} 

var req = http.request(options, function (res) { 
    var chunks = []; 

    res.on("data", function (chunk) { 
    chunks.push(chunk); 
    }); 

    res.on("end", function() { 
    var body = Buffer.concat(chunks); 
    console.log(body.toString()); 
    }); 
}); 

options{}はofcourseの方法/ホスト名/ポートで満たされている。以下は、私がこれまで持っているコードです。私は郵便配達員で "バイナリ"ファイルを追加しますが、ノードJSのリクエストにファイルを書き込む方法はわかりません。

答えて

0

リクエストパッケージはnpmに使用できます。

がNPMから requestモジュールをインストールします。 npm install request --save

は、その後、あなたのリクエストを送信するために要求モジュールを使用します。

実装の詳細については、https://www.npmjs.com/package/requestをご覧ください。

+0

実際の例を挙げてください。今すぐコメントしています – mplungjan

1

あまりにも多くの作業をしなくても現在のプログラムに簡単に適合するソリューションは、npmにform-dataモジュールを使用することです。

フォームデータモジュールは、ノードでマルチパートリクエストを容易にします。以下は、使用方法の簡単な例です。

var http = require("https"); 
var FormData = require('form-data'); 
var fs = require('fs') 

var form = new FormData(); 
form.append('my_field', fs.createReadStream('my_audio.file')); 

var options = { 
    host: 'your.host', 
    port: 443, 
    method: 'POST', 
    // IMPORTANT! 
    headers: form.getHeaders() 
} 

var req = http.request(options, function (res) { 
    var chunks = []; 

    res.on("data", function (chunk) { 
    chunks.push(chunk); 
    }); 

    res.on("end", function() { 
    var body = Buffer.concat(chunks); 
    console.log(body.toString()); 
    }); 
}); 

// Pipe form to request 
form.pipe(req); 

「現実の」シナリオでは、さらに多くのエラーチェックが必要です。また、npmには、このプロセスを簡単にする他のhttpクライアントもたくさんあります(要求モジュールはフォームデータBTWを使用しています)。ご興味のある方は、requestgotをご覧ください。

バイナリリクエストを送信する場合、基本は同じですが、reqwritable streamです。したがって、pipeのデータをストリームに追加するか、req.write(data)で直接書き込むことができます。ここに例があります。

​​

あなたが明示的にreq.write(data)writeメソッドを使用する場合はreq.end()を呼び出す必要があります。また、ノードのBufferdocs)のエンコードオプションを調べることもできます。

+0

ありがとうございました。残念ながら、私が投稿しているサーバは、フォームデータを受け付けず、バイナリファイル転送のみ受け付けます。 – Raymond

+0

申し訳ありませんが、私は誤解しました。私は答えを編集し、それが助けてくれることを願う。 – Nindaff

+0

ありがとう、これは私のための解決策です – Raymond

関連する問題