मुझे नहीं पता कि क्या आप पहले से डेटा के प्रकार को नियंत्रित कर सकते हैं। GetObject() कॉलबैक में प्रदान किया गया बॉडी फ़ील्ड। यदि आप बस इतना करना चाहते हैं कि आपको बफर प्राप्त हुआ है, तो आप Node's Buffer.isBuffer (डेटा। बॉडी) क्लास विधि का प्रयास कर सकते हैं।
वैकल्पिक रूप से, आप पूरी तरह से अमेज़न के S3 documentation से इस दृष्टिकोण समस्या से बचने और उपयोग करने के लिए चाहते हो सकता है:
var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);
यह मानकर आप एक विशिष्ट Node.js async कॉलबैक वातावरण में इस कोड का उपयोग करेंगे, यह कर सकता है अधिक भावना कोड इसलिए की तरह देखने के लिए:
var fs = require('fs');
function downloadFile(key, localPath, callback) {
var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: key};
var file = fs.createWriteStream(localPath);
file.on('close') {
callback();
}
file.on('error', function(err) {
callback(err);
});
s3.getObject(params).createReadStream().pipe(file);
}
यदि उपरोक्त कोड डाउनलोड करने में विफल रहता है, तो आप त्रुटि को कैसे फंसते हैं? – Mike
@ माइक: 'करीबी' हैंडलर से पहले या उसके बाद, कुछ जोड़ें: file.on ('error', function (err) {callback (err);}); – Bruce
धन्यवाद! धन्यवाद! धन्यवाद! – Mike