Heim >Web-Frontend >js-Tutorial >Wie kann ich mit ExpressJS Dateien von einem NodeJS-Server herunterladen?

Wie kann ich mit ExpressJS Dateien von einem NodeJS-Server herunterladen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-30 14:34:11523Durchsuche

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

Herunterladen von Dateien vom NodeJS-Server mit Express

Wenn Sie auf eine Webseite auf einem NodeJS-Server zugreifen, müssen Sie möglicherweise darauf gespeicherte Dateien herunterladen Der Server. Dieser Artikel führt Sie durch den Prozess des Herunterladens von Dateien mit dem ExpressJS-Framework.

ExpressJS-Dateidownload

Um einen Dateidownload zu starten, verwenden Sie res.download() von ExpressJS bereitgestellte Methode. Diese Methode legt automatisch die erforderlichen HTTP-Header für den Dateianhang und die Disposition fest.

Zur Demonstration:

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

Einschließlich Dateiname und -typ

Von Standardmäßig werden heruntergeladene Dateien mit „Download“ bezeichnet. Um einen benutzerdefinierten Dateinamen und -typ anzugeben, müssen Sie zusätzliche HTTP-Header festlegen.

  • Dateiname: res.setHeader('Content-disposition', 'attachment; filename= dramapenguin.MOV')
  • Dateityp: res.setHeader('Content-type', 'video/quicktime')

Umfassende Implementierung

Hier ist eine robustere Implementierung, die zur Bestimmung die Mime-Bibliothek verwendet Der MIME-Typ der Datei dynamisch:

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);
});

Verwendet res.write()

Wenn Sie den res.write()-Ansatz bevorzugen, legen Sie zuerst die Header „Content-Disposition“ und „Content-Length“ fest:

res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
res.setHeader('Content-Length', file.length);
res.write(file, 'binary');

Denken Sie an die konsequente Verwendung ein readStream für die Dateiübertragung anstelle synchroner Methoden für optimale Leistung.

Das obige ist der detaillierte Inhalt vonWie kann ich mit ExpressJS Dateien von einem NodeJS-Server herunterladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn