Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Can';t使用aws sdk在nodejs中上载图像_Node.js_Amazon S3 - Fatal编程技术网

Node.js Can';t使用aws sdk在nodejs中上载图像

Node.js Can';t使用aws sdk在nodejs中上载图像,node.js,amazon-s3,Node.js,Amazon S3,我尝试过使用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

我尝试过使用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);   
            }
        });
    });
}); 
您是否尝试过。发送()

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


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

转到s3管理控制台,选择一个文件,然后单击比例->查看文件链接。 美国标准 主机在您的控制台窗口中 yourback.s3.amazonaws.com/

美国西部1号 主机在您的控制台窗口中
yourbucket.s3-us-west-1.amazonaws.com/

我对新SDK也有同样的问题,通过显式设置端点选项解决了这个问题

参考:

片段:

var AWS = require('aws-sdk'); 

var s3 = new AWS.S3({ endpoint :'https://s3-your-region-varies.amazonaws.com' }),
    myBucket = 'your-bucket-name';

var params = {Bucket: myBucket, Key: 'myUpload', Body: "Test"};

s3.putObject(params, function(err, data) {
    if (err)  {
        console.log(err) 
    } else {
        console.log("Successfully uploaded data to "+myBucket+"/testKeyUpload");
    }
});

或者,您可以通过在配置文件中设置区域来解决这个问题,您只需要精确地指定区域名称。

我也会遇到同样的错误{code:'PermanentRedirect',message:'您试图访问的存储桶必须使用指定的终结点寻址。请将将来的所有请求发送到此终结点。',状态代码:301,可重试:false}将区域设置为空白为meMine执行了此操作,因此设置“区域”:“ap-SOUTHEST-1”为我解决了问题。谢谢:-)
var AWS = require('aws-sdk'); 

var s3 = new AWS.S3({ endpoint :'https://s3-your-region-varies.amazonaws.com' }),
    myBucket = 'your-bucket-name';

var params = {Bucket: myBucket, Key: 'myUpload', Body: "Test"};

s3.putObject(params, function(err, data) {
    if (err)  {
        console.log(err) 
    } else {
        console.log("Successfully uploaded data to "+myBucket+"/testKeyUpload");
    }
});