我刚刚学习React,我创建了一个画廊应用程序,但我有问题,张贴图片到API。问题是,当我点击按钮ADD
时,什么也没有发生,只是在console.log中,我得到了一个error 500
。
这里是我的组件与后请求:
class AddPhoto extends Component {
constructor(props) {
super(props);
this.state = {
modal: false,
images: [],
isLoading: false,
error: null,
};
this.toggle = this.toggle.bind(this);
this.handleClick = this.handleClick.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
toggle() {
this.setState({
modal: !this.state.modal
});
}
handleClick(event) {
event.preventDefault();
this.setState({
modal: !this.state.modal
});
}
handleSubmit(event){
event.preventDefault();
this.setState({ isLoading: true });
let path = this.props.path;
fetch(`http://.../gallery/${path}`, {
method: 'POST',
headers: {'Content-Type':'multipart/form-data'},
body: new FormData(document.getElementById('addPhoto'))
})
.then((response) => response.json())
.then((data)=>{
this.setState({images: data.images, isLoading: false});
this.props.updateImages(data.images);
})
.catch(error => this.setState({ error, isLoading: false}));
}
render() {
return (
<Card className="add">
<div className="link" onClick={this.toggle}>
<CardBody>
<CardTitle>Add picture</CardTitle>
</CardBody>
</div>
<Modal isOpen={this.state.modal} toggle={this.toggle} className={this.props.className}>
<div className="modal-header">
...
</div>
<ModalBody>
<form className="addPhotoForm" id="addPhoto" onSubmit={this.handleSubmit}>
<input type="file" required />
<Button color="success" type="Submit">Add</Button>
</form>
</ModalBody>
</Modal>
</Card>
);
}
}
- 你有任何想法我做错了什么,为什么不工作,为什么我得到错误500?*
谢谢你帮我
4条答案
按热度按时间bjp0bcyl1#
根据这个https://muffinman.io/uploading-files-using-fetch-multipart-form-data它的工作方式不同,至少对我来说它的工作以及。
你应该删除
'Content-Type': 'multipart/form-data'
,它开始工作。raogr8fs2#
这是我上传组件的一部分。看看我是怎么做的,你可以修改它,上传按钮,如果你需要的话。
yqyhoc1h3#
这对我来说很好,试试看:
cbwuti444#
如果您需要发送一个属性多于图像的请求,请用途:
请记住,所有属性都应附加在图像之前