Проблемы с загрузкой двоичного файла с помощью aws-sdk

Я переключаю свой сервер с knox на официальный 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'. Любое понимание этого?

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();

Редактировать 9 января 2012: в библиотеке появилось обновление, если вы используете последнюю версию от 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

Другие вопросы по тегам