2013-01-24 38 views
5

Tôi đã thử sử dụng aws-sdk và knox và tôi nhận được mã trạng thái 301 đang cố gắng tải lên hình ảnh. Tôi nhận được mã trạng thái 301 và thông báo - 'Nhóm bạn đang cố gắng truy cập phải được giải quyết bằng cách sử dụng điểm cuối được chỉ định. Vui lòng gửi tất cả các yêu cầu trong tương lai đến điểm cuối này. Điều này hoạt động trong php.Không thể tải lên hình ảnh trong các nút bằng cách sử dụng aws-sdk

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); 
      } 
     }); 
    }); 
}); 

Trả lời

4

Bạn đã thử .send()?

Tôi có thể tải lên S3 bằng mã bên dưới.

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(); 
+1

Tôi nhận được thông báo lỗi {code: 'PermanentRedirect', : 'Nhóm bạn đang cố truy cập phải được giải quyết bằng điểm cuối được chỉ định. Vui lòng gửi tất cả các yêu cầu trong tương lai đến điểm cuối này. ', Trạng thái Mã: 301, có thể thử lại: false} – rigaman

7

Tôi thực sự giải quyết vấn đề này. Trong cấu hình của bạn, bạn phải có một khu vực, vì thùng của tôi là "US Standard", tôi để trống vùng của mình và nó hoạt động. config.json - { "accessKeyId": "secretKey", "secretAccessKey": "secretAccessKey", "khu vực": ""}

đi đến S3 quản lý giao diện điều khiển chọn một trong các tập tin của bạn và bấm vào proporties -> nhìn vào liên kết tập tin. Mỹ chuẩn https://s3.amazonaws.com/yourbucket/ chủ trong giao diện điều khiển cửa sổ của bạn yourbucket.s3.amazonaws.com/

chúng tôi-tây-1 https://s3-us-west-1.amazonaws.com/yourbucket/ chủ trong giao diện điều khiển cửa sổ của bạn yourbucket.s3-us-tây-1.amazonaws. com/

+0

Đặt khu vực thành trống đối với tôi – badunk

+0

Tôi là singapore nên đặt "region": "ap-southeast-1" vấn đề cho tôi. Cảm ơn :-) –

0

Tôi có cùng sự cố với SDK mới và giải quyết nó bằng cách đặt tùy chọn điểm cuối một cách rõ ràng.

tham khảo: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor_details

Snippet:

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"); 
    } 
}); 

Ngoài ra, bạn có thể giải quyết việc này bằng cách thiết lập khu vực trong tập tin cấu hình của bạn và bạn chỉ cần có để được chính xác tên miền của bạn.

Các vấn đề liên quan