使用
react-native-image-picker
和 react-native-image-resizer
包,我从设备上的图库中选择了图像并尝试上传该图像。
我使用 axios multipart/form-data 将图像上传到后端服务器。
在Android设备上上传图片成功,但在模拟器上上传失败,没有任何响应或错误。
这是我的一些代码。我没有登录到控制台。
let formBody = new FormData();
formBody.append('json', JSON.stringify(userBody));
//userBody is json request
let avatarObject;
if (avatarUri !== '' && avatarUri !== null) {
avatarObject = {
name: 'userImage.jpg',
type: 'image/jpeg',
uri: avatarUri
};
}
//avatarObject is image object for uploading here
if (typeof avatarObject !== 'undefined') {
formBody.append('file', avatarObject);
}
let myRequest = {
method: 'post',
url: URL.UPDATE_PERSONAL_DETAILS_With_IMAGE,
headers: {
Accept: 'application/json',
'Accept-Encoding': Platform.OS === 'ios' ? 'gzip' : '',
'Content-Type': 'multipart/form-data',
},
data: formBody,
};
return axios
.request(myRequest)
.then((res) => {
console.log('-----updateUserData.Redux.res.data-----', res.data);
dispatch({type: UPDATE_USER_DATA_SUCCESS});
})
.then(() => dispatch(getUserData()))
.catch((err) => {
console.log('-----updateUserData.Redux.err-----', err);
dispatch({type: UPDATE_USER_DATA_FAILURE, error: err});
});
};
如果您的应用程序崩溃,这条线将不适合您 将此行添加到您的请求标头对象中。
'Access-Control-Allow-Origin': '*',
有关此的任何更新。
对我来说,它在 Android 设备和 iOS 模拟器设备上运行良好,但是当我尝试在真实的 iOS 设备中上传图像/文件时,它失败了。