我有以下代码,用于使用图像和某些身体参数创建事件。当我没有图像时,它工作正常,我正在使用react-native-image-crop-picker
选择图像。从react-native发布数据时出现“网络请求失败”错误。该请求从未到达我的后端,因为我在那里没有日志。与邮递员一起工作很好。
我的代码:
const { name, date, description, location, uri, mime, time } = this.state;
const formData = new FormData();
formData.append('name', name)
formData.append('date', date)
formData.append('description', description)
formData.append('location', location)
formData.append('time', time)
formData.append('image',{
uri:uri,
mime:'image/jpeg',
name:`image${moment()}`
})
alert(JSON.stringify(formData));
const config = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
body: formData,
};
fetch(`http://${Config.apihost}:${Config.port}/events`,config).then((res) => res.json())
.then((res) => {
this.setState({ modalVisible: false, name:'', date: moment().format('YYYY-MM-DD'), description:'', Location: 'AlHedaya Masjid' })
this.props.addEvent(res.message);
// this.props.navigation.goBack();
}).catch((err) => alert(err));
我还有另一个屏幕,其中包含不同数量的图片,例如图库,我正在将多张图片上传到图库,该请求在下面的代码下工作正常。
const data = new FormData();
data.append('name', 'avatar');
images.map((res, i) => {
data.append('fileData[]', {
uri: res.path,
type: res.mime,
name: `image${i}${moment()}`
});
})
const config = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
body: data,
};
fetch(`http://${Config.apihost}:${Config.port}/events/${this.state.item.id}/photos`, config)
.then((checkStatusAndGetJSONResponse) => checkStatusAndGetJSONResponse.json())
.then((response) => {
if (response.status && response.message.length > 0) {
var images = this.state.images;
response.message.map(file => {
images.push(`http:${Config.apihost}:${Config.port}/images/${file.id}`);
});
this.setState({ images });
}
}).catch((err) => { alert(err) });
我看不到这两个代码之间的区别,但是上面的代码给了我错误。
我想念什么吗?
答案 0 :(得分:1)
在第一个代码段中,您编写的是 mime ,而不是 type 。
formData.append('image',{
uri:uri,
**mime:'image/jpeg**',
name:`image${moment()}`
})
应该类似于以下代码段
formData.append('image',{
uri:uri,
type:'image/jpeg',
name:`image${moment()}`
})