Maison > interface Web > js tutoriel > Comment puis-je télécharger des fichiers depuis un serveur NodeJS à l'aide d'ExpressJS ?

Comment puis-je télécharger des fichiers depuis un serveur NodeJS à l'aide d'ExpressJS ?

Patricia Arquette
Libérer: 2024-11-30 14:34:11
original
582 Les gens l'ont consulté

How Can I Download Files from a NodeJS Server Using ExpressJS?

Téléchargement de fichiers à partir du serveur NodeJS à l'aide d'Express

Lorsque vous accédez à une page Web sur un serveur NodeJS, vous pouvez rencontrer le besoin de télécharger des fichiers stockés sur le serveur. Cet article vous guidera tout au long du processus de téléchargement de fichiers à l'aide du framework ExpressJS.

Téléchargement de fichiers ExpressJS

Pour lancer un téléchargement de fichier, utilisez res.download() méthode fournie par ExpressJS. Cette méthode définit automatiquement les en-têtes HTTP nécessaires pour la pièce jointe et la disposition des fichiers.

Pour démontrer :

app.get('/download', (req, res) => {
  res.download(`${__dirname}/upload-folder/dramaticpenguin.MOV`);
});
Copier après la connexion

Inclure le nom et le type de fichier

Par par défaut, les fichiers téléchargés sont nommés « téléchargement ». Pour spécifier un nom et un type de fichier personnalisés, vous devez définir des en-têtes HTTP supplémentaires.

  • Nom du fichier : res.setHeader('Content-disposition', 'attachment; filename= dramapenguin.MOV')
  • Type de fichier : res.setHeader('Content-type', 'video/quicktime')

Implémentation complète

Voici une implémentation plus robuste utilisant la bibliothèque mime pour déterminer le type MIME du fichier de manière dynamique :

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

app.get('/download', (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);

  const filestream = fs.createReadStream(file);
  filestream.pipe(res);
});
Copier après la connexion

Utilisation res.write()

Si vous préférez l'approche res.write(), définissez d'abord les en-têtes Content-Disposition et Content-Length :

res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
res.setHeader('Content-Length', file.length);
res.write(file, 'binary');
Copier après la connexion

N'oubliez pas d'utiliser systématiquement un readStream pour la transmission de fichiers plutôt que des méthodes synchrones pour des performances optimales.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal