更新: 供将来参考,亚马逊现在已经根据提问时的情况更新了文档。按照下面@Loren Segal的评论所述:
我们已经在最新的预览版中更正了文档,以正确记录此参数。很抱歉造成混淆!
我正在尝试使用AWS SDK for Node.Js的开发人员预览版,并希望使用putObject
将压缩的tarball上传到S3。
根据文档,Body
参数应为...
Body - (Base64编码数据)
...因此,我正在尝试以下代码...
var AWS = require('aws-sdk'),
fs = require('fs');
// For dev purposes only
AWS.config.update({ accessKeyId: 'key', secretAccessKey: 'secret' });
// Read in the file, convert it to base64, store to S3
fs.readFile('myarchive.tgz', function (err, data) {
if (err) { throw err; }
var base64data = new Buffer(data, 'binary').toString('base64');
var s3 = new AWS.S3();
s3.client.putObject({
Bucket: 'mybucketname',
Key: 'myarchive.tgz',
Body: base64data
}).done(function (resp) {
console.log('Successfully uploaded package.');
});
});
虽然我可以在S3中看到该文件,但如果我下载它并尝试解压缩它,就会出现文件损坏的错误。因此,我的“base64编码数据”的方法似乎有误。
请问有人能帮我使用putObject
上传二进制文件吗?