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`); });
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.
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); });
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');
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!