在将多个文件从react应用程序上载到Node服务器时,我遇到了一个问题。我和穆特一起在服务器上建立了上传。在Post上测试了api,它运行得很好。在从React前端上传时,我使用表单数据来管理上载的有效载荷和文件。这是React上代码的示例。
const formData = new FormData();
for (let i = 0; i < photos.length; i++) {
console.log(photos[i]);
formData.append(`photos[]`, photos[i]);
}
formData.append(`firstName`, firstName);
formData.append(`lastName`, lastName);
formData.append(`email`, email);
formData.append(`password`, password);
在后端(节点服务器),req.files是空的,但是req.body作为有效负载的一部分返回带有照片的数据。这是req.body日志。
console.log(req.files) => undefined
console.log(req.body) => {
photos: [ {}, {}, {} ] (the files are returning inside the req.body),
firstName: 'Test',
lastName: 'Two',
email: 'test111@test.com',
password: '123456'
}
注意:我使用了体解析器、express.json和urlencoded。这是我的表格标签
<form onSubmit={submitHandler} encType="multipart/form-data">这是输入
<input
type="file"
name="photos"
className="form-control"
multiple
max={4}
onChange={handleFileChange}
/>穆特处理程序
module.exports = multer({
storage: multer.diskStorage({}),
fileFilter: (req,file,cb)=>{
let ext = path.extname(file.originalname);
if(ext === '.jpeg' || ext === '.jpg' || ext === '.png' || ext === '.pdf' || ext === ".txt" || ext === ".doc"){
cb(null,true)
}else{
cb({error:'You can not upload this type of file'},false)
}
}
})这是我的路线
router.post('/users/register', upload.array("photos", 4), registerValidation(), validate, UserController.registerUser);
谁来帮帮我,我不知道我做错了什么
发布于 2022-10-15 20:06:55
我能够解决这个问题,从身体解析器到内置的表达式。另外,我在form标记中删除了encType,并在标头中直接传递了内容类型。谢谢大家的建议。
https://stackoverflow.com/questions/74068327
复制相似问题