Multer接收表單資料,但在req.body物件中留下所有欄位,包括影像檔案。以下是我的代碼:
回應:
span class="hljs-keyword">const state = {
//其他領域
images: [], //陣列的影像檔案。
};
let formData = new FormData();
//append other fields[/span]。
formData.append("images", state.images) 。
await fetch(url, {
body: formData,
// config.
});
Express:
const express = require("express") 。
const router = express.Router()。
const controller = require("./controller") 。
const multer = require("multer") 。
const storage = multer.memoryStorage()。
const imageFilter = (req, file, cb) => {
//只接受影像檔案。
if (!file.originalname.match(/. (jpg|jpeg|png|gif)$/i) {
return cb(new Error("只允許影像檔案! "),false)。)
}
cb(null, true);
};
const upload = multer({ storage, fileFilter: imageFilter }) 。
//其他路線
router.post("/"/span>, upload. array("images"), controller.handleImagePost)。)
uj5u.com熱心網友回復:
如果表單資料檔案嵌套在一個陣列中,Multer就不會決議它們。最好是在你的React狀態陣列上回圈,并將每個檔案單獨附加到formData物件中。(參見FormData API和Multer docs)
for (const image of state.images) {
formData.append("image", image, image.path) 。
}
確保在你的multer中間件代碼中匹配表單資料欄位的名稱
router.post("/"/span>, upload. array("image"), controller.handleImagePost)。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/310211.html
標籤:
