首頁 > web前端 > js教程 > 如何從 Express.js 伺服器下載具有正確檔案名稱和副檔名的檔案?

如何從 Express.js 伺服器下載具有正確檔案名稱和副檔名的檔案?

DDD
發布: 2024-12-02 11:53:11
原創
315 人瀏覽過

How to Download Files with Correct Filenames and Extensions from Express.js Servers?

從Express.js 伺服器下載具有完整檔案名稱和副檔名的檔案

在Node.js 中,提供檔案下載很簡單,但是確保它具有正確的名稱和檔案副檔名可能有點棘手。

舊方法:

使用 Express.js 編寫檔案下載路由時,您需要明確設定 Content-Disposition 標頭以提供檔案名稱和檔案副檔名。此外,您可能需要包含Content-Length 和Content-Type 標頭以便更好地處理:

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
  res.write(fs.readFileSync(file, 'binary'));
  res.end();
});
登入後複製

Express.js Helper:

Express.js now包括一個名為download的輔助方法,可簡化檔案下載流程:

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.download(file); // Sets 'Content-Disposition' and sends the file
});
登入後複製

增強功能:

對於更進階的功能,您可以利用路徑和mime 等第三方函式庫自動確定檔案名稱、檔案副檔名、和mime類型:

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

app.get('/download', function(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);
  res.download(file);
});
登入後複製

此方法可確保您下載的檔案始終具有正確的名稱和檔案副檔名,無論其檔案名稱為何伺服器上的位置。

以上是如何從 Express.js 伺服器下載具有正確檔案名稱和副檔名的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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