无法使用aws-sdk在nodejs中上传图像

rig*_*man 5 amazon-s3 node.js

我尝试过使用aws-sdk和knox,我得到状态代码301试图上传图像.我得到状态码301和消息 - '您尝试访问的存储桶必须使用指定的端点进行寻址.请将以后的所有请求发送到此端点.这适用于PHP.

AWS.config.loadFromPath(__dirname + '/config/config.json');
fs.readFile(source, function (err, data) {
var s3 = new AWS.S3();
    s3.client.createBucket({Bucket: 'mystuff'}, function() {
       var d = {
            Bucket: 'mystuff',
            Key: 'img/test.jpg',
            Body: data,
            ACL: 'public-read'
            };
       s3.client.putObject(d, function(err, res) {
            if (err) {
                console.log("Error uploading data: ", err);
                callback(err); 
            } else {
                console.log("Successfully uploaded data to myBucket/myKey");
                callback(res);   
            }
        });
    });
}); 
Run Code Online (Sandbox Code Playgroud)

rig*_*man 7

我实际上解决了这个问题.在你的配置中你必须有一个区域,因为我的桶是"美国标准",我把我的区域留空并且它有效.config.json - {"accessKeyId":"secretKey","secretAccessKey":"secretAccessKey","region":""}

转到s3管理控制台选择一个文件并单击比例 - >查看文件链接. 控制台窗口中的美国标准 https://s3.amazonaws.com/yourbucket/ host yourbucket.s3.amazonaws.com/

us-west-1 https://s3-us-west-1.amazonaws.com/yourbucket/ host at console console yourbucket.s3-us-west-1.amazonaws.com/


小智 5

你试过.send()吗?

我可以通过下面的代码上传到S3.

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/AWSRequest.html

var s3object = {Bucket: 'mystuff', Key: name, Body : data['data']};
    s3.client.putObject(s3object).done(function(resp){
      console.log("Successfully uploaded data");
    }).fail(function(resp){
      console.log(resp);
    }).send();
Run Code Online (Sandbox Code Playgroud)