एक नोड.जेएस प्रोजेक्ट में मैं एस 3 से डेटा वापस लेने का प्रयास कर रहा हूं।Node.js में S3 getObject से प्रतिक्रिया कैसे प्राप्त करें?
जब मैं getSignedURL
उपयोग करते हैं, सब कुछ काम करता है:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
मेरे परम हैं:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
अगर मैं कंसोल के लिए यूआरएल उत्पादन लेने के लिए और एक वेब ब्राउज़र में पेस्ट करें, इसके डाउनलोड फ़ाइल मुझे चाहिए
हालांकि, अगर मैं getObject
का उपयोग करने का प्रयास करता हूं तो मुझे सभी प्रकार के अजीब व्यवहार मिलते हैं। मेरा मानना है कि मैं इसे गलत तरीके से इस्तेमाल कर रहा हूं। यह मैं क्या कोशिश की है है:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
आउटपुट:
{
AcceptRanges: 'bytes',
LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT',
ContentLength: '1602862',
ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"',
ContentType: 'application/octet-stream',
Metadata: {},
Body: <Buffer 01 00 00 00 ... > }
null
तो ऐसा लगता है कि यह ठीक से काम कर रहा है। हालांकि, जब मैंने console.log
एस में से एक पर ब्रेकपॉइंट लगाया, तो मेरा आईडीई (नेटबीन) एक त्रुटि फेंकता है और डेटा के मूल्य को दिखाने से इंकार कर देता है। हालांकि यह आईडीई हो सकता है, मैंने getObject
का उपयोग करने के अन्य तरीकों का प्रयास करने का निर्णय लिया।
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
यह कुछ भी आउटपुट नहीं करता है। शो में एक ब्रेकपॉइंट डालने से पता चलता है कि कोड कभी भी console.log
एस तक पहुंचता नहीं है। मैं भी करने की कोशिश की:
aws.getObject(params).on('success', function(data){
console.log(data);
});
बहरहाल, यह भी नहीं है उत्पादन कुछ भी है और एक ब्रेकपाइंट रखने पता चलता है कि console.log
कभी नहीं पहुँच जाता है।
मैं क्या गलत कर रहा हूं?
क्या आपकी 'aws' ऑब्जेक्ट वास्तव में 'aws.S3' ऑब्जेक्ट का एक नया उदाहरण है? साथ ही, 'getObject()' को http प्रतिक्रिया पर वापस भेज दिया जा रहा है या क्या यह फ़ाइल में पाइप किया जा रहा है? – peteb
@peteb 'aws = new AWS.S3()'। प्रतिक्रिया को फ़ाइल में पाइप नहीं किया जाना चाहिए। मुझे इसे जावास्क्रिप्ट –
में उपयोग करने की आवश्यकता है तो क्या यह मानना सुरक्षित है कि सामग्री जेएसओएन या एक्सएमएल है? – peteb