使用Node.js将一个base64映像从IOS上传到S3

我有以下代码,使用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

这将在err中返回以下错误:

 { "code": "UnexpectedParameter", "name": "UnexpectedParameter" } 

上传一个base64镜像到S3的正确方法是什么?

您无法使用密钥创build存储桶。 密钥标识桶内的资源。 不知道你使用的是什么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,我已经改变了上面的代码基于这里的文档。 我刚刚跳过了createBucket步骤。 您将bucket和keyparameter passing给putObject方法,而不是AWS.S3构造函数。