Node.js 如何在节点服务器端解析formdata?
我用的是nodejs,REACT,express,axios。我想让上传功能,但我不能。当我上传文件时,服务器无法解析上传的文件(只显示{}日志) 下面是我的前端代码 当用户单击表单元素上的上载按钮时,“handleSubmit”函数被调用,“handleSubmit”函数调用“fileUploadRequest”函数 在“fileUploadRequest”功能中,一切都很好。我可以看到附加文件的信息Node.js 如何在节点服务器端解析formdata?,node.js,reactjs,axios,Node.js,Reactjs,Axios,我用的是nodejs,REACT,express,axios。我想让上传功能,但我不能。当我上传文件时,服务器无法解析上传的文件(只显示{}日志) 下面是我的前端代码 当用户单击表单元素上的上载按钮时,“handleSubmit”函数被调用,“handleSubmit”函数调用“fileUploadRequest”函数 在“fileUploadRequest”功能中,一切都很好。我可以看到附加文件的信息 <form onSubmit={this.handleSubmit} encType=
<form onSubmit={this.handleSubmit} encType='multipart/form-data'>
<input type="file" onChange={this.handleChange}/>
<input type="submit" value="UPLOAD"/>
</form>
export function fileUploadRequest(username, uploadFile, uploadFileName) {
return (dispatch) => {
dispatch(fileUpload());
let formData = new FormData();
formData.append('fileName', uploadFileName);
formData.append('fileHandler', uploadFile);
return axios.post('/upload/upload', {formData})
.then((response) => {
dispatch(fileUploadSuccess());
}).catch((error) => {
dispatch(fileUploadFailure());
});
};
}
在req.body日志中,我只能看到{formData:{}}日志
“字段”和“文件”在日志上都是“{}”
如何解析服务器上的附加文件?使用for Express处理上载的文件。
然后使用req.file
访问上传文件的所有数据
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
...
router.post('/upload', upload.single('fileHandler'), (req, res) => {
console.log('req.file.filename', req.file.filename); // the filename will be generated by multer
console.log('req.body.fileName', req.body.fileName); // to access the filename you created at the upload
});
@卡迪克斯,谢谢你。我可以用multer解析上传的文件 但我发现了更多的问题。 即使使用multer,我的代码也不起作用 下面是不工作的代码
formData = new FormData();
formData.append('fileName', uploadFileName);
return axios.post('/upload/upload', {formData})
所以我像这样修改了代码
formData = new FormData();
formData.append('fileName', uploadFileName);
return axios.post('/upload/upload', formData);
仅将“{formData}”更改为“formData”,但效果良好。
我不知道为什么会这样。其他人知道这个原因,请对此问题进行评论。现在您将{}删除到
formData
,是否有效?
formData = new FormData();
formData.append('fileName', uploadFileName);
return axios.post('/upload/upload', formData);