पर जानकारी शामिल है aws-sdk
मॉड्यूल और एक्सप्रेस 4.13 का उपयोग करके, एस 3 से कई तरीकों से प्रॉक्सी को प्रॉक्सी करना संभव है।एक्सप्रेस के साथ एस 3 से स्ट्रीमिंग फ़ाइल जिसमें लंबाई और फ़ाइल प्रकार
इसके लिए कॉलबैक संस्करण एक बफर, प्लस Content-Length
जैसे अन्य प्रासंगिक हेडर के रूप में फ़ाइल शरीर वापस आ जाएगी:
function(req,res){
var s3 = new AWS.S3();
s3.getObject({Bucket: myBucket, Key: myFile},function(err,data){
if (err) {
return res.status(500).send("Error!");
}
// Headers
res.set("Content-Length",data.ContentLength)
.set("Content-Type",data.ContentType);
res.send(data.Body); // data.Body is a buffer
});
}
इस संस्करण के साथ समस्या आप है जो इसे भेजने से पहले पूरी फ़ाइल प्राप्त करने के लिए है कि, अच्छा नहीं, खासकर यदि यह वीडियो की तरह कुछ बड़ा है।
इस संस्करण में सीधे फ़ाइल स्ट्रीम होगा:
function(req,res){
var s3 = new AWS.S3();
s3.getObject({Bucket: myBucket, Key: myFile})
.createReadStream()
.pipe(res);
}
लेकिन पहले के विपरीत, वह यह हेडर है, जो एक ब्राउज़र ठीक से फ़ाइल को संभालने के लिए आवश्यकता हो सकती है के बारे में कुछ नहीं करेंगे।
क्या एस 3 से सही शीर्षलेखों के माध्यम से गुज़रने, दोनों को स्ट्रीम के रूप में भेजने के लिए दोनों दुनिया के सर्वश्रेष्ठ प्राप्त करने का कोई तरीका है? इसे पहले मेटाडाटा प्राप्त करने के लिए HEAD
एस 3 के अनुरोध के द्वारा किया जा सकता है, लेकिन क्या इसे एक एपीआई कॉल के साथ किया जा सकता है?
यह उत्कृष्ट है। धन्यवाद! – matthoiland
तो आप एक के बजाय दो HTTP अनुरोध करना पसंद करते हैं? –