我正在使用带有这些标头的 Postman。
如果我保留默认的 Content-Type,它会抛出错误
Error: Malformed part header
但是,如果我删除默认的 Content-Type 并放入我自己的(见最后一个键),它将无法扫描我上传的文件(
req.file
是undefined
)。如果我有任何类型的边界,则会抛出相同的错误。
因此,我倾向于认为边界是问题所在。但是,如果我删除它,我将无法看到我的
req.file
这是我的 node.js 代码
const multer = require("multer")
const upload = multer({
storage: multer.diskStorage({
destination: (req, file, callback) => {
callback(null, "./images")
},
filename: (req, file, callback) => {
callback(null, file.originalname)
}
})
})
app.post("/single", upload.single("upload"), (req, res) => {
console.log(req.file);
res.send("Testing123")
})
更新: 我还没有找到答案,但是当我关闭并重新打开邮递员时,
Error: Malformed part header
不再显示。然而,我的req.file
还是undefined
因为有人问 另一个堆栈溢出问题 是否回答了我的问题:不,没有,这就是原因。我已经在做答案 1
回答3(
multipart/mixed
)也让我req.file
undefined
我看了答案4的视频,但它和答案一一样
答案很愚蠢。出于某种原因,它没有显示 req.file,但它仍然处理所有相同的内容。这真的让我很困惑,但我将我的代码更改为官方的 multer 错误处理方式, https://www.npmjs.com/package/multer#error-handling
app.post('/profile', function (req, res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
} else if (err) {
// An unknown error occurred when uploading.
} else {
// Everything went fine.
console.log(req.file)
}
})
})
我将能够在
//Everything went fine
部分下看到它。这有点奇怪,所以如果有人知道原因,请告诉我
我也遇到了 Postman 的这个问题,我切换到 Insomnia,我的代码工作得很好。问题似乎是邮递员而不是multer。
格式不正确的部分标题 这个错误发生在邮递员身上。这是邮递员故障。(通过这种方法我解决了这个问题所以我分享) 首先,如果一切正常,您必须正确检查标题。 1)然后删除你在邮递员集合中提出的请求。 2)然后发出或添加一个新请求并点击它应该工作的请求。
是的,我确认这是邮递员的小故障, 我的解决方案只是删除我集合中的请求并重新配置它并且它工作正常
仔细检查表格代码和标题
const sinupsubmit = (e)=>{
e.preventDefault();
const myform = new FormData();
myform.set("name",name);
myform.set("email", email);
myform.set("password", password);
myform.set("avatar", avatar)
dispatch(register(myform))
}
dispatch({type:USER_REQUEST});
const config = {
headers: {
"Content-type": "multipart/form-data",
},
};
const {data} = await axios.post('/user/register',userdata,config);