我正在尝试通过 React 中的表单字段将图像发送到后端。我首先在我的构造函数类中将状态分配为空
this.state = {
image: "",
}
然后,我为图像和普通文本字段创建了一个 handleChange 函数。
handleChange(event) {
const state = this.state;
switch (event.target.name) {
case 'image':
state.image = event.target.files[0];
break;
default:
state[event.target.name] = event.target.value;
}
this.setState(state);
}
在 handleSubmit 函数中,我正在调用 FormData 函数并将图像附加到它,如下所示
handleSubmit(event) {
event.preventDefault();
const { syllabus,image } = this.state;
let formData = new FormData();
formData.append('image', image);
axios.post('api', { syllabus, formData })
.then((response) => {
console.log(response);
});
}
最后,这是我的表单域
<span className="btn btn-default btn-file file-choose">
<input type="file" name="image" placeholder="Enter Image" onChange={this.handleChange} />
</span>
当我提交此表单并在 Chrome 控制台中检查我的“网络”选项卡时,formData 似乎为空,即没有传递图像。当我选择一个文件调用后端路由时,文件被上传,但我无法从 React 前端实现这一点,并且图像永远不会被传递。我哪里错了?