本文將教你如何使用 Node.js,特別是 Express,來處理檔案上傳。

首先,安裝 express-fileupload npm 模組:

npm install express-fileupload

然後將它加入至中介軟體:

import fileupload from 'express-fileupload'

// 或者

const fileupload = require('express-fileupload')

在你建立了 Express 應用程式之後,加入以下程式碼:

app.use(
 fileupload(),
 //...

這是必要的,否則伺服器將無法解析檔案上傳。

現在上傳的檔案將會在 req.files 中提供。如果你忘記加入這個中介軟體,req.files 會是 undefined

以下是處理檔案的最小程式碼範例:

app.post('/saveImage', (req, res) => {
 const image = req.files.myFile
 const path = __dirname + '/images/' + image.name
 
 image.mv(path, (error) => {
 if (error) {
 console.error(error)
 res.writeHead(500, {
 'Content-Type': 'application/json'
 })
 res.end(JSON.stringify({ status: 'error', message: error }))
 return
 }
 
 res.writeHead(200, {
 'Content-Type': 'application/json'
 })
 res.end(JSON.stringify({ status: 'success', path: '/images/' + image.name }))
 })
})

我們使用了上傳圖片的 mv 屬性,這是 express-fileupload 模組所提供的。我們將它移動至指定的 path,然後將處理結果(成功或錯誤)回傳給客戶端。