2013-02-13 2 views
89

を使ってNode.jsの内のバイナリコンテンツを取得する私はGETrequestを使用してバイナリデータをしよう、とのようなものを持っていました:は、要求

var requestSettings = { 
    method: 'GET', 
    url: url, 
}; 
request(requestSettings, function(error, response, body) { 
    // Use body as a binary Buffer 
} 

しかしbodyは常に予想と異なる数バイトでした。さらに調査した結果、requestbodyと仮定され、文字列で、すべての非ユニコードバイトが置き換えられました。

私はrequestSettings

encoding: 'binary' 

を追加しようとしましたが、それは助けにはなりませんでした。

バイナリデータはどのように入手できますか?

答えて

188

OK、掘削の多くの後、私はrequestSettingsが持つべきことが判明:

encoding: null 

そしてbodyではなく文字列で、デフォルトの、タイプBufferのものであろう。

+15

ありがとうございました。しかし、これはリクエストモジュールの部分では直感的ではありません。 –

+26

どんなに不条理な悪夢。これを狩るのに12時間かかりました。デフォルトでは、Node Requestモジュールは応答のコンテンツ内に入ってくるデータをUTF-8として扱い、非UTF-8バイトシーケンスを迷惑メール(有効なUTF-8)文字に自動的に変換するようです。 'mimetype'などの設定は動作しません(* response *データではありません)。エンコーディング:nullは唯一のオプションで、文書化されていません。ノードバイナリデータを取得する方法についてはノードリクエストのドキュメントを参照してください。ありがとう! –

+0

@DanNissenbaum同じ経験をここに!ちょうど信じられないほど – Novellizator