Node.js中MulterError: Unexpected field问题排查求助
解决Multer上传时的Unexpected field错误
我基于Express、Multer和MongoDB编写了图片上传至数据库并在网站展示的后端代码:
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://127.0.0.1:27017/"; var express = require('express'); var router = express.Router(); const multer = require('multer'); const dbName = "cars"; const collectionName = "car-name"; const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, 'C:/Users/tahaa/OneDrive/Desktop/yourcar edit/front-end/src/cars/'); }, filename: (req, file, cb) => { cb(null, Date.now() + '-' + file.originalname); } }); const upload = multer({ storage: storage }); router.post('/', upload.single('file'), (req, res) => { const carImg = req.file.path; const carName = req.body.carName; const carType = req.body.carType; const carYear = req.body.carYear; const carColor = req.body.carColor; const carDescription = req.body.carDescription; const carPrice = req.body.carPrice; const carKm = req.body.carKm; MongoClient.connect(url, { useUnifiedTopology: true }) .then((client) => { const db = client.db(dbName); const collection = db.collection(collectionName); const myobj = { carImg: carImg, carName: carName, carType: carType, carYear: carYear, carColor: carColor, carDescription: carDescription, carPrice: carPrice, carKm: carKm }; return collection.insertOne(myobj); }) .then(() => { res.json({ message: 'File uploaded successfully!' }); console.log('File uploaded successfully!'); }) .catch((err) => { console.error('Failed to save image path in MongoDB', err); res.status(500).json({ message: 'Failed to save image path in MongoDB' }); }); });
使用Postman测试接口时,出现如下错误:
MulterError: Unexpected field at wrappedFileFilter (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\multer\\index.js:40:19) at Multipart.<anonymous> (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\multer\\lib\\make-middleware.js:107:7) at Multipart.emit (node:events:513:28) at HeaderParser.cb (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\busboy\\lib\\types\\multipart.js:358:14) at HeaderParser.push (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\busboy\\lib\\types\\multipart.js:162:20) at SBMH.ssCb [as _cb] (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\busboy\\lib\\types\\multipart.js:394:37) at feed (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\streamsearch\\lib\\sbmh.js:200:10) at SBMH.push (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\streamsearch\\lib\\sbmh.js:104:16) at Multipart._write (C:\\Users\\tahaa\\OneDrive\\Desktop\\node_modules\\busboy\\lib\\types\\multipart.js:567:19) at writeOrBuffer (node:internal/streams/writable:392:12)
该错误源于Multer中间件指定的字段名与客户端请求的字段名不匹配,按以下步骤排查:
- 确认客户端请求的文件字段名与代码中
upload.single('file')里的'file'完全一致 - 确保请求中包含carName、carType、carYear等所有必要字段
- 检查文件存储目录是否存在,且服务器拥有该目录的写入权限
若排查后问题仍未解决,可寻求进一步技术协助。
内容的提问来源于stack exchange,提问作者Taha ik
相关产品推荐
相关产品推荐

