Güncelleme
Express'in hayatı kolaylaştırmak için bir yardımcısı vardır .
app.get('/download', function(req, res){
const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
res.download(file); // Set disposition and send it.
});
Eski Cevap
Tarayıcınızla ilgili olarak, dosyanın adı sadece 'indir' dir, bu nedenle başka bir HTTP başlığı kullanarak daha fazla bilgi vermeniz gerekir.
res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
Bunun gibi bir mim türü de göndermek isteyebilirsiniz:
res.setHeader('Content-type', 'video/quicktime');
Daha derinlemesine bir şey istiyorsanız, işte buradasınız.
var path = require('path');
var mime = require('mime');
var fs = require('fs');
app.get('/download', function(req, res){
var file = __dirname + '/upload-folder/dramaticpenguin.MOV';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
Üstbilgi değerini istediğiniz gibi ayarlayabilirsiniz. Bu durumda, dosyanın mime türünün ne olduğunu denetlemek için bir mime türü kitaplığı - düğüm-mime kullanıyorum .
Burada dikkat edilmesi gereken bir diğer önemli şey, bir readStream kullanmak için kodunuzu değiştirmiş olmasıdır. Bu, işleri yapmanın çok daha iyi bir yoludur çünkü adda 'Senkronizasyon' ile herhangi bir yöntem kullanıldığında, düğümün eşzamansız olması gerektiği için kaşlarını çatmıştır.