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