2013-08-24 146 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