3

我将服务器从knox切换到官方aws-sdk,但是我与最终结果有一些差异。使用aws-sdk下载二进制文件的问题

在AWS-SDK,我用getObject得到这样一个文件:

svc.client.getObject({Bucket:"someBucket", 
    Key:file, 
    ResponseContentEncoding:"application/octet-stream"}, 
     function(err, data) { 
      if(!err) 
      { 
       var buff = new Buffer(data.Body, "binary"); 
       var fd = fs.openSync(file + ".aws", "w"); 
       fs.writeSync(fd, buff, 0, buff.length,0); 
      } 
     }); 

我得到这似乎是几个字节过一个文件,但是当我在十六进制进行比较像BeyondCompare这样的编辑器,大量的字节被替换为'FD'。对此有何看法?

回答

2

明白了:2012年1月的

var writePos = 0; 
var stream = fs.createWriteStream("/tmp/test.jpg", { flags: 'w', encoding: null, mode: 0666 }); 
s3.client.getObject({ Bucket: bucket, Key: key }).data(function(data) { 
    stream.write(data.data); 
}).done(function() { 
    stream.end(); 
}).send(); 

编辑第九:有一个更新到库中,如果你使用最新从GitHub:

var stream = fs.createWriteStream("/tmp/test.jpg", { flags: 'w', encoding: null, mode: 0666 }); 
s3.client.getObject({ Bucket: bucket, Key: key }).on('httpData', function(chunk) { 
    stream.write(chunk); 
}).on('complete', function() { 
    stream.end(); 
}).send(); 

这是在介绍以下拉动请求:https://github.com/aws/aws-sdk-js/pull/22