2011-08-15 29 views
18

Bir ek olarak PostageApp API'sine geçmek için Node.JS içinde base64 kullanarak bir görüntüyü kodlamaya çalışıyorum. Çalıştığımı düşündüm ama tam olarak aradığım şey olmayan bir 1K dosyası var. İşte Node.JS - Base64 kullanarak görüntüleri Base64 kullanarak kodlama

benim kod:

var base64data; 

fs.readFile(attachment, function(err, data) { 
    base64data = new Buffer(data).toString('base64'); 
}); 

Ve burada yapıyorum API çağrısı parçası: ben biraz Düğüm ile çok büyük olmamak, kayıp değilim

attachments: { 
    "attachment.txt" : { 
    content_type: "application/octet-stream", 
    content: base64data 
    }, 
} 

ama işe yarayacağını düşündüm. Herhangi bir yardım takdir edilecektir! Sonuçlar kalmayıncaya kadar

+0

@Jim Schubert, bu danışma yanlış VE kötü. İlk olarak, readFile tüm dosyayı değil, yığınları okur. İkincisi, engelleme kodu tüm sunucuyu engelleyecekti, aptal fikir. – thejh

cevap

36
fs.readFile(attachment, function(err, data) { 
    var base64data = new Buffer(data).toString('base64'); 
    [your API call here] 
}); 

Bu verilere sahibiz zaman, böylece dış kapsamları yürütme zaten bitti, biraz zaman alır.

+0

Maalesef, base64data'yı temelde bir JSON hashı olan bir yük yüküne geçiriyorum. Bu, daha sonra API sunucusuna POST. Yaptığım şeye tercih edilebilir mi? – JonLim

+0

@JonLim, bu temelde bunu yapmanın tek yolu. Tüm bu şeyleri yapmak zorunda kalacaksınız ("base64data'yı temelde bir JSON hash'ına aktarın, sonra API sunucusuna POST göndereceğim"). – thejh

+0

Ah. Başka yolu yok mu? Bu berbat, eklenti parametresinin isteğe bağlı olması nedenidir, bu nedenle ek yoksa, bu dahil edilmez. Yine de teşekkürler! – JonLim

9

Sadece kodlama olarak "base64" ü belirtin. Per the docs:

Hiçbir kodlama belirtilmemişse, ham arabellek döndürülür.

fs.readFile(attachment, {encoding: 'base64'}, function(err, base64data) { 
    [your API call here] 
}); 
+0

Okuma için kodlama, kodlamanın ne yapmak istediğinizi değil, ekin kodlamasını dosyalamaz mı? – Sam

+1

belgesinde, 'Kodlama, Buffer.' tarafından" createReadStream "olsa da kabul edilenlerden biri olabilir. Dediğim şeyleri denedim ve işe yaradı. – Kennyhyun

İlgili konular