Maison >interface Web >js tutoriel >Comment télécharger des fichiers avec des noms de fichiers et des extensions corrects à partir des serveurs Express.js ?

Comment télécharger des fichiers avec des noms de fichiers et des extensions corrects à partir des serveurs Express.js ?

DDD
DDDoriginal
2024-12-02 11:53:11325parcourir

How to Download Files with Correct Filenames and Extensions from Express.js Servers?

Télécharger des fichiers à partir de serveurs Express.js avec un nom de fichier et une extension complets

Dans Node.js, proposer un fichier à télécharger est simple, mais s'assurer qu'il porte le nom et l'extension de fichier corrects peut être un peu plus délicat.

Ancien Approche :

Lors de l'écriture d'un itinéraire de téléchargement de fichier à l'aide d'Express.js, vous devrez définir explicitement l'en-tête Content-Disposition pour fournir le nom et l'extension du fichier. De plus, vous souhaiterez peut-être inclure les en-têtes Content-Length et Content-Type pour une meilleure gestion :

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
  res.write(fs.readFileSync(file, 'binary'));
  res.end();
});

Express.js Helper :

Express.js maintenant inclut une méthode d'assistance appelée téléchargement qui simplifie le téléchargement du fichier processus :

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.download(file); // Sets 'Content-Disposition' and sends the file
});

Améliorations :

Pour des fonctionnalités plus avancées, vous pouvez utiliser des bibliothèques tierces telles que le chemin et le mime pour déterminer automatiquement le nom du fichier, l'extension du fichier, et tapez MIME :

const path = require('path');
const mime = require('mime');

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  const filename = path.basename(file);
  const mimetype = mime.getType(file);

  res.setHeader('Content-disposition', 'attachment; filename=' + filename);
  res.setHeader('Content-Type', mimetype);
  res.download(file);
});

Cette approche garantit que votre fichier téléchargé a toujours le nom et l'extension de fichier corrects, quel que soit son emplacement sur le serveur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn