我正在使用 mern stack 構建一個 crud 應用程式,它允許用戶使用表單上傳影像并輸入其他資料,例如產品名稱、描述、數量和價格。在郵遞員中測驗 api 端點時,我收到此錯誤。
MulterError: Unexpected field
at wrappedFileFilter (C:\React Applications\Nifet Health\node_modules\multer\index.js:40:19)
at Multipart.<anonymous> (C:\React Applications\Nifet Health\node_modules\multer\lib\make-middleware.js:107:7)
at Multipart.emit (node:events:520:28)
at HeaderParser.cb (C:\React Applications\Nifet Health\node_modules\busboy\lib\types\multipart.js:358:14)
at HeaderParser.push (C:\React Applications\Nifet Health\node_modules\busboy\lib\types\multipart.js:162:20)
at SBMH.ssCb [as _cb] (C:\React Applications\Nifet Health\node_modules\busboy\lib\types\multipart.js:394:37)
at feed (C:\React Applications\Nifet Health\node_modules\streamsearch\lib\sbmh.js:248:10)
at SBMH.push (C:\React Applications\Nifet Health\node_modules\streamsearch\lib\sbmh.js:104:16)
at Multipart._write (C:\React Applications\Nifet Health\node_modules\busboy\lib\types\multipart.js:567:19)
at writeOrBuffer (node:internal/streams/writable:389:12)
/ @desc Create product
// @route POST /api/products
// @access Private
const createProduct = asyncHandler(upload.single('image'), async(req, res) => {
if(!req.body.name || !req.body.price || !req.body.quantity || !req.body.description){
throw new Error('Please add all fields')
}
// Upload image to cloudinary
const result = await cloudinary.uploader.upload(req.file.path);
// Create new product
const product = await Product.create({
name: req.body.name,
price: req.body.price,
quantity: req.body.quantity,
description: req.body.description,
cloudinary_id: result.public_id
})
res.status(200).json(result)
})
多檔案
const multer = require("multer");
const path = require("path");
// Multer config
module.exports = multer({
storage: multer.diskStorage({}),
fileFilter: (req, file, cb) => {
let ext = path.extname(file.originalname);
if (ext !== ".jpg" && ext !== ".jpeg" && ext !== ".png") {
cb(new Error("File type is not supported"), false);
return;
}
cb(null, true);
},
});
uj5u.com熱心網友回復:
在您的請求中,缺少檔案的欄位名稱。它必須與您在 中設定的字串匹配upload.single('<fieldName>')。
所以在你的郵遞員示例中設定image為你的檔案的名稱。
它還在檔案中提到:
在上傳功能中使用表單中的名稱欄位值非常重要。這告訴 multer 它應該在請求的哪個欄位中查找檔案。如果這些欄位在 HTML 表單和您的服務器上不同,您的上傳將失敗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494976.html
