Mettre à jour
Express a une aide pour cela pour vous faciliter la vie.
app.get('/download', function(req, res){
const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
res.download(file); // Set disposition and send it.
});
Ancienne réponse
En ce qui concerne votre navigateur, le nom du fichier est simplement «télécharger», vous devez donc lui donner plus d'informations en utilisant un autre en-tête HTTP.
res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
Vous pouvez également envoyer un type MIME comme celui-ci:
res.setHeader('Content-type', 'video/quicktime');
Si vous voulez quelque chose de plus approfondi, c'est parti.
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);
});
Vous pouvez définir la valeur d'en-tête comme vous le souhaitez. Dans ce cas, j'utilise une bibliothèque de type mime - node-mime , pour vérifier quel est le type mime du fichier.
Une autre chose importante à noter ici est que j'ai changé votre code pour utiliser un readStream. C'est une bien meilleure façon de faire les choses, car l'utilisation de toute méthode avec «Sync» dans le nom est désapprouvée car le nœud est censé être asynchrone.