如何在 Node.js 中使用 Multer 進行高效文件上傳?

Node.js 是一個廣受歡迎的 JavaScript 環境,用於開發各類應用程式,包括文件上傳應用程式。Multer 是一個強大的 Node.js 中間件,專門用於處理文件上傳。本文將為您提供 2025 最新的語法與最佳實踐,幫助您輕鬆實現文件上傳功能。

安裝 Multer

首先,我們需要安裝 Multer。可以使用以下命令進行安裝:

“`bash
npm install multer
“`

這條命令將會在您的 Node.js 專案中安裝 Multer 中間件,讓您能夠方便地處理文件上傳。

建立文件上傳路由

接下來,我們需要建立一個文件上傳路由,以便接收文件上傳請求。以下是使用 Express 框架建立路由的範例:

“`javascript
const express = require(‘express’);
const router = express.Router();

router.post(‘/upload’, (req, res) => {
// 處理文件上傳
res.send(‘文件上傳成功’);
});

module.exports = router;
“`

在上面的程式碼中,我們建立了一個 POST 路由 `/upload`,用於接收文件上傳請求。

使用 Multer 處理文件上傳

現在,我們可以使用 Multer 來處理文件上傳請求。以下是如何進行的範例:

“`javascript
const multer = require(‘multer’);

// 設定文件上傳的儲存位置
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, ‘uploads/’);
},
filename: function (req, file, cb) {
cb(null, Date.now() + ‘-‘ + file.originalname); // 使用時間戳作為文件名稱
}
});

const upload = multer({ storage: storage });

router.post(‘/upload’, upload.single(‘file’), (req, res) => {
// 獲取上傳文件的詳細信息
const file = req.file;
if (!file) {
return res.status(400).send(‘沒有上傳的文件’);
}
console.log(file);
res.send(‘文件上傳成功,文件名稱:’ + file.filename);
});
“`

在這段程式碼中,我們使用 `multer.diskStorage` 設定了文件的儲存位置和文件名稱。這樣可以避免文件名稱重複,並將文件存儲到指定的路徑。

獲取上傳文件的詳細信息

當文件上傳成功後,我們可以使用 `req.file` 來獲取上傳文件的詳細信息。以下是如何獲取這些信息的範例:

“`javascript
router.post(‘/upload’, upload.single(‘file’), (req, res) => {
const file = req.file;
if (!file) {
return res.status(400).send(‘沒有上傳的文件’);
}
console.log(file);
res.send(‘文件上傳成功,文件名稱:’ + file.filename);
});
“`

在這段程式碼中,我們檢查了是否有文件上傳,如果沒有,則返回錯誤信息。

錯誤處理

在實際應用中,您可能會遇到各種錯誤,例如文件格式不正確或文件大小超過限制。您可以在 Multer 配置中增加檢查條件,比如:

“`javascript
const upload = multer({
storage: storage,
limits: { fileSize: 1 * 1024 * 1024 }, // 限制文件大小為 1MB
fileFilter: (req, file, cb) => {
const filetypes = /jpeg|jpg|png|gif/; // 限制文件格式
const mimetype = filetypes.test(file.mimetype);
if (mimetype) {
return cb(null, true);
}
cb(new Error(‘只支持圖片格式!’));
}
});
“`

這樣可以有效地過濾掉不符合條件的文件,提升應用的穩定性。

延伸應用

除了基本的文件上傳外,您還可以考慮將上傳的文件連接到數據庫,或是進行進一步的處理,例如壓縮、轉碼等。這些功能可以提高您的應用效能和用戶體驗。

總結

在本文中,我們介紹了如何使用 Multer 進行文件上傳,從安裝、路由設置到處理文件上傳請求。我們還涵蓋了錯誤處理和延伸應用的部分。Multer 是一個非常有用的 Node.js 中間件,讓您能夠輕鬆處理文件上傳請求。如果您正在開發文件上傳應用程式,Multer 值得您考慮。

如果您想深入了解更多 Node.js 的應用和最佳實踐,請參考我們的 [Node.js 教學文](https://vocus.cc)!

Q&A(常見問題解答)

**Q1: Multer 支持哪些文件格式的上傳?**
A1: Multer 支持多種文件格式的上傳,您可以通過設定 `fileFilter` 來限制允許的文件格式。

**Q2: 如何處理文件上傳過程中的錯誤?**
A2: 您可以在 Multer 的配置中使用 `limits` 和 `fileFilter` 來處理常見的錯誤,例如文件大小限制和文件格式不正確。

**Q3: 如何獲取上傳文件的詳細信息?**
A3: 當上傳成功後,可以透過 `req.file` 獲取上傳文件的詳細信息,包括文件名、大小和 MIME 類型等。

Categorized in:

Tagged in:

,