hakkında bilgi içeren Express ile S3'ten gelen akış dosyası aws-sdk
modülünü ve Express 4.13'ü kullanarak, S3'ten bir dosyaya çeşitli yollarla proxy uygulamak mümkündür.Uzunluk ve filetype
Bu geri arama sürüm Content-Length
gibi bir tampon artı diğer ilgili başlıkları gibi dosya gövde metni olacaktır:
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
});
}
bu sürümü ile sorun olan göndermeden önce tüm dosyayı almak zorunda olmasıdır Büyük değil, özellikle video gibi büyük bir şey varsa.
Bu sürüm dosyayı doğrudan akışı olacak:
function(req,res){
var s3 = new AWS.S3();
s3.getObject({Bucket: myBucket, Key: myFile})
.createReadStream()
.pipe(res);
}
Ama ilkinden farklı olarak, bir tarayıcı düzgün dosyayı işlemek gerekebilir Üstbilgilerinde hakkında hiçbir şey yapmayacaktır.
Her iki dünyanın en iyisini elde etmenin, S3'ten doğru başlıklardan geçmenin, ancak dosyayı akış olarak göndermenin bir yolu var mı? İlk önce meta verileri almak için S3'e HEAD
isteği yapılarak yapılabilir, ancak bir API çağrısı ile yapılabilir mi?
Bu mükemmel. Teşekkürler! – matthoiland
Yani bir yerine iki HTTP isteği yapmayı tercih edersiniz? –