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

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

DDD
DDD原創
2024-12-02 11:53:11317瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn