2013-08-24 106 views
1

我有以下代码中使用的node.js上传从IOS设备到AWS S3的图像的图像的base64:从上传到IOS S3使用的Node.js

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的正确方法是什么?

回答

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构造函数。

+0

我不想创建一个新的桶,只是试图添加一个新的图像到我现有的。 –

+0

我正在使用官方aws sdk for node.js. –

+0

现在来看看。 – tandrewnichols