Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Muat Turun Fail dari Pelayan NodeJS Menggunakan ExpressJS?

Bagaimanakah Saya Boleh Muat Turun Fail dari Pelayan NodeJS Menggunakan ExpressJS?

Patricia Arquette
Patricia Arquetteasal
2024-11-30 14:34:11530semak imbas

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

Memuat Turun Fail daripada Pelayan NodeJS Menggunakan Express

Apabila mengakses halaman web pada pelayan NodeJS, anda mungkin menghadapi keperluan untuk memuat turun fail yang disimpan pada pelayan. Artikel ini akan membimbing anda melalui proses memuat turun fail menggunakan rangka kerja ExpressJS.

Muat Turun Fail ExpressJS

Untuk memulakan muat turun fail, gunakan res.download() kaedah yang disediakan oleh ExpressJS. Kaedah ini secara automatik menetapkan pengepala HTTP yang diperlukan untuk lampiran dan pelupusan fail.

Untuk menunjukkan:

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

Termasuk Nama dan Jenis Fail

Oleh lalai, fail yang dimuat turun dinamakan "muat turun." Untuk menentukan nama dan jenis fail tersuai, anda perlu menetapkan pengepala HTTP tambahan.

  • Nama Fail: res.setHeader('Content-disposition', 'attachment; filename= dramaticpenguin.MOV')
  • Jenis Fail: res.setHeader('Content-type', 'video/quicktime')

Pelaksanaan Komprehensif

Berikut ialah pelaksanaan yang lebih mantap menggunakan perpustakaan mime untuk menentukan jenis mime fail secara dinamik:

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

Menggunakan res.write()

Jika anda lebih suka pendekatan res.write(), tetapkan pengepala Content-Disposition dan Content-Length pertama:

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

Ingat untuk menggunakan readStream secara konsisten untuk penghantaran fail dan bukannya kaedah segerak untuk prestasi optimum.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Muat Turun Fail dari Pelayan NodeJS Menggunakan ExpressJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn