2013-02-13 25 views
89

kullanarak node.js ikili içeriği alınıyor ve benzeri bir şey vardı: beklenendenBen <a href="https://github.com/request/request" rel="noreferrer"><code>request</code></a> kullanarak <code>GET</code> bir ikili veri çalışıyordu isteği

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

Ama body her zaman bir kaç bayt farklıydı. Daha fazla araştırmadan sonra request'un body kabul edildiğini ve tüm unicode olmayan baytların yerini aldığını öğrendim.

Ben requestSettings için

encoding: 'binary' 

eklemeye çalıştım ama yardım etmedi.

İkili verileri nasıl alabilirim?

cevap

188

Tamam, kazma bir sürü sonra ben requestSettings sahip olması gerektiğini öğrendim:

encoding: null 

Sonra body yerine dize varsayılan ait, tip Buffer olacaktır.

+15

Mükemmel çalışır, teşekkürler. Ancak bu istek modülünün tamamen sezgisel değil. –

+26

Ne saçma bir kabus. Bunu avlamak için 12 saatimi aldım. Düğüm İstek modülünün varsayılan olarak, yanıtın içeriğinde gelen verileri UTF-8 olarak ele aldığı ve herhangi bir UTF-8 olmayan bayt dizisini otomatik olarak gereksiz (ama geçerli UTF-8) karakterlere dönüştürdüğü görülmektedir. 'Mimetype' vb. Ayarlarının hiçbiri işe yaramaz (* yanıtı * verileri için değil). '' Kodlama: null '' çalışan tek seçenektir ve - çok zayıf bir şekilde belgelenir. Düğüm içinde saf ikili veriyi nasıl alacağınız ile ilgili belgeler ... –

+0

@DanNissenbaum burada aynı deneyim! sadece inanılmaz – Novellizator