首頁 > web前端 > js教程 > 如何使用 ExpressJS 從 NodeJS 伺服器下載檔案?

如何使用 ExpressJS 從 NodeJS 伺服器下載檔案?

Patricia Arquette
發布: 2024-11-30 14:34:11
原創
524 人瀏覽過

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

使用Express 從NodeJS 伺服器下載檔案

造訪NodeJS 伺服器上的網頁時,您可能會遇到需要下載伺服器上的文件的情況伺服器。本文將引導您完成使用 ExpressJS 框架下載檔案的流程。

ExpressJS 檔案下載

要啟動檔案下載,請使用 res.download() ExpressJS提供的方法。此方法會自動設定檔案附件和處置所需的 HTTP 標頭。

示範:

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

包含檔案名稱和類型

透過預設情況下,下載的檔案名稱為「download」。若要指定自訂檔案名稱和類型,您需要設定額外的 HTTP 標頭。

  • 檔名: res.setHeader('Content-disposition', 'attachment; filename= dramaticpenguin.MOV')
  • 檔案類型: res.setHeader('Content-type', 'video/quicktime')

綜合實現

這裡有一個更健壯的實現,使用 mime 庫來確定動態文件的 mime類型:

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);
});
登入後複製

使用res.write()

如果您喜歡res.write() 方法,請先設定Content-Disposition 和Content-Length標頭:

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

記得一致使用用於檔案傳輸的readStream而不是同步方法以獲得最佳性能。

以上是如何使用 ExpressJS 從 NodeJS 伺服器下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板