我有以下代码使用node.js将图像从ios设备上传到AWS S3:
var buf = new Buffer(req.body.image.replace(/^data:image\/\w+;base64,/, ""),'base64')
var s3bucket = new AWS.S3({params: {Bucket: 'forplay-static', Key: 'test.png'}});
s3bucket.putObject(buf, function(err, data) {
if (err) {
return res.send({ success: false, err: err });
} else {
return res.send({ success: true });
}
});
我发布的图片是:http://pastebin.com/kcmXJbRd
这会在错误中返回以下错误:
{ "code": "UnexpectedParameter", "name": "UnexpectedParameter" }
将base64图像上传到S3的正确方法是什么?
答案 0 :(得分:7)
您无法使用密钥创建存储桶。密钥标识存储桶中的资源。不确定您使用的是哪个AWS客户端,所以我不确定它应该是什么样子,但可能是这样的:
var buf = new Buffer(req.body.image.replace(/^data:image\/\w+;base64,/, ""),'base64')
var s3 = new AWS.S3();
s3.putObject({Bucket: 'forplay-static', Key: 'test.png', Body: buf}, function(err, data) {
if (err) {
return res.send({ success: false, err: err });
} else {
return res.send({ success: true });
}
});
编辑:现在我知道了aws-sdk,我已根据文档here更改了上面的代码。我刚跳过createBucket
步骤。您将bucket和key参数传递给putObject方法,而不是AWS.S3构造函数。