2

サーバーを 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 などの 16 進エディタで比較すると、多数のバイトが「FD」に置き換えられています。これに関する洞察はありますか?

4

1 に答える 1

2

とった:

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

2012 年 1 月 9 日編集: 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

于 2013-01-03T10:54:50.620 に答える