Search code examples
node.jsbufferarraybuffer

nodejs handling arraybuffers


suppose I make a multipart, application/octet-stream request with responseType as 'arraybuffer'...suppose I receive this in nodejs and I try to write the response into a file. How can I handle this such that I don't corrupt the contents?

My current approach is something like this

var req = var req = restler.post(url, opts)
  .on('data', function (data){
    console.log('receiving data...');
    console.log(data);
  }).on('complete', function (data) {
    var buff = new Buffer(data) //this is prolly incorrect, but I can't figure this out at all
    fs.writeFile(file_name, buff.toString('binary'), function(err){
      console.log('done!')
    });

Here I write the contents into filename. Suppose I fetch a microsoft word file...fetching it only leads me to a corrupt file. Also using restler package for this


Solution

  • According to the restler documentation, you can set decoding: 'buffer' in your opts and it will keep the binary data intact as a Buffer instead of the default utf8-encoded string. From there it's just a matter of passing the buffer directly to fs.writeFile() without calling buffer.toString().