【发布时间】:2012-11-28 05:50:37
【问题描述】:
更新:为了将来参考,亚马逊现在已经根据询问时的内容更新了文档。根据@Loren Segal 下面的评论:-
我们已更正最新预览版中的文档,以正确记录此参数。抱歉混淆了!
我正在试用 the AWS SDK for Node.Js 的开发者预览版,并希望使用 putObject 将压缩的 tarball 上传到 S3。
根据the documentation,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 上传二进制文件吗?
【问题讨论】:
标签: javascript node.js amazon-s3 amazon-web-services