2013-01-24 28 views
5

का उपयोग करके नोडजेज़ में छवियां अपलोड नहीं कर सकते हैं मैंने aws-sdk और knox का उपयोग करने का प्रयास किया है और मुझे छवियों को अपलोड करने का प्रयास करने वाला स्टेटस कोड 301 मिलता है। मुझे स्टेटस कोड 301 और संदेश मिलता है - 'जिस बाल्टी को आप एक्सेस करने का प्रयास कर रहे हैं उसे निर्दिष्ट एंडपॉइंट का उपयोग करके संबोधित किया जाना चाहिए। कृपया इस अंतिम बिंदु पर सभी भावी अनुरोध भेजें। यह PHP में काम करता है।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); 
      } 
     }); 
    }); 
}); 

उत्तर

4

क्या आपने कोशिश की .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(); 
+1

मैं एक ही त्रुटि {कोड प्राप्त 'बाल्टी पर पहुंचने का प्रयास कर रहे हैं निर्दिष्ट एंडपॉइंट का उपयोग करके संबोधित किया जाना चाहिए। कृपया इस अंतिम बिंदु पर सभी भावी अनुरोध भेजें। ', स्थिति कोड: 301, पुनः प्रयास करने योग्य: झूठी} – rigaman

7

मैं वास्तव में इस समस्या का समाधान। आपकी कॉन्फ़िगरेशन में आपके पास एक क्षेत्र होना चाहिए, क्योंकि मेरी बाल्टी "यूएस मानक" थी, इसलिए मैंने अपना क्षेत्र खाली छोड़ दिया और यह काम किया। config.json - { "accessKeyId": "secretKey", "secretAccessKey": "secretAccessKey", "क्षेत्र": ""}

S3 के लिए प्रबंधन कंसोल आपकी फ़ाइलों में से एक का चयन करें और proporties पर क्लिक करें जाने -> फ़ाइल लिंक देखें। अमेरिका अपने कंसोल विंडो yourbucket.s3.amazonaws.com/

में मानक https://s3.amazonaws.com/yourbucket/ मेजबान हमें पश्चिम -1 अपने कंसोल विंडो yourbucket.s3-हमें पश्चिम-1.amazonaws में https://s3-us-west-1.amazonaws.com/yourbucket/ मेजबान। कॉम/

+0

इस क्षेत्र को खाली करने के लिए यह सेट किया गया – badunk

+0

मेरा सिंगापुर था इसलिए "क्षेत्र": "एपी-दक्षिणपूर्व -1" को हल किया गया मेरे लिए समस्या धन्यवाद :-) –

0

मुझे नए एसडीके के साथ एक ही समस्या है और इसे एंडपॉइंट विकल्प को स्पष्ट रूप से सेट करके हल किया गया है।

संदर्भ: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor_details

स्निपेट:

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

वैकल्पिक रूप से, आप इस अपने कॉन्फ़िग फ़ाइल में क्षेत्र की स्थापना द्वारा हल कर सकते हैं और तुम सिर्फ अपने क्षेत्र के नाम की सटीक होना है। 'PermanentRedirect', संदेश:

संबंधित मुद्दे

 संबंधित मुद्दे