Reactjs 如何在fetch中传递POST参数,以便在React Native中将图像上载到服务器?
这是我试图将图像发送到服务器的代码Reactjs 如何在fetch中传递POST参数,以便在React Native中将图像上载到服务器?,reactjs,react-native,react-native-camera,react-native-fetch-blob,react-native-fs,Reactjs,React Native,React Native Camera,React Native Fetch Blob,React Native Fs,这是我试图将图像发送到服务器的代码 postData = async () => { var location = await AsyncStorage.getItem('location'); var path = await AsyncStorage.getItem('path'); var post_type = await AsyncStorage.getItem('post_type');
postData = async () => {
var location = await AsyncStorage.getItem('location');
var path = await AsyncStorage.getItem('path');
var post_type = await AsyncStorage.getItem('post_type');
var userId = await AsyncStorage.getItem('userID');
const formData = new FormData();
//I want to pass params in fetch but I don't know how to.
var params = JSON.stringify({
"user": userId,
"description": this.state.description,
"location": location,
"post_type": post_type,
});
const uriPart = path.split('.');
const fileExtension = uriPart[uriPart.length - 1];
formData.append('photo', {
uri: path,
name: `photo.${fileExtension}`,
type: `image/${fileExtension}`,
});
fetch(strings.baseUri+"addPosts",{
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
},
body: formData,
})
.then((response) => response.json())
.then((responseJson) => {
alert(responseJson); // This gives me error JSON Parse error: Unexpected EOF
})
.catch((error) => {
console.error(error);
});
}
我想在fetch中传递参数。在我的例子中,参数是params。我想将这些参数与映像一起发送到服务器。请帮忙
更新
FormData
不能接受字符串化的JSON,但可以在对象上迭代,将值附加到表单上。
像这样:
var params = {
"user": userId,
"description": this.state.description,
"location": location,
"post_type": post_type,
};
const uriPart = path.split('.');
const fileExtension = uriPart[uriPart.length - 1];
formData.append('photo', {
uri: path,
name: `photo.${fileExtension}`,
type: `image/${fileExtension}`,
});
Object.keys(params).forEach(key => formData.append(key, params[key]));
fetch(strings.baseUri+"addPosts",{
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
},
body: formData,
})
.then((response) => response.json())
.then((responseJson) => {
alert(responseJson); // This gives me error JSON Parse error: Unexpected EOF
})
.catch((error) => {
console.error(error);
});
}
可以使用append传递参数
参考链接:
检查IftekharDani我检查了这个解决方案。但它并没有告诉我如何在fetch中传递参数,它给了我一个警告。“TyperError:请求的值的键不是对象。”@ShubhamBisht是否删除了对象的字符串化?是的,我删除了。它仍然给我一个来自
alert(responseJson)
的JSON解析错误,请帮助。我对此一无所知。@ShubhamBisht什么是response
,你能记录下来吗?它仍然给我一个错误-JSON解析错误:意外的EOFFirst,你在服务器上检查你得到的参数和图像?在转换为JSONI检查之前还要记录你得到的response
。我在服务器上没有得到任何东西。我使用了alert(response)
,它给了我一个输出[object object],您可以使用console.log(JSON.stringify(response))
const formData = new FormData();
formData.append('photo', {
uri: path,
name: `photo.${fileExtension}`,
type: `image/${fileExtension}`,
});
formData.append('user', userId);
formData.append('description', description);
formData.append('location', location);
formData.append('post_type', post_type);