react-native - RN 62.2 中 formData 和 Axios 的奇怪行为
问题描述
我正在使用react-native-image-crop
选择器和react-redux
向导。在该向导的一个步骤中,用户上传他/她的图像,最后将向导数据提交到服务器。所以我使用这样的表单数据:
let formData = new FormData();
files?.forEach((f) => {
let pathParts = f.path.split('/');
let file = {
uri: Platform.OS === 'android' ? f.path : f.path.replace('file://', ''),
type: f.mime,
name: pathParts[pathParts.length - 1],
};
formData.append('attachments', file);
});
try {
let response = await axios.post('http://example.com/route', formData, {
headers: {'Content-Type': 'multipart/form-data'},
});
} catch (error) {
console.log(error);
console.log(formData);
}
当有图像时有错误:
[Error: Network Error]
formData 包含:
{"_parts": [["attachments", [Object]]]}
每个文件都是这样的json:
{
"name": "cat_pic_9.jpg",
"type": "image/jpeg",
"uri": "file:///data/user/0/com.company.app/cache/react-native-image-crop-picker/cat_pic_9.jpg"
}
我尝试global.originalFormData
单独安装 Form-Data 包,但没有区别。
现在我看到这个错误"_response": "read failed: EBADF (Bad file descriptor)"
::/
解决方案
对于那些在 Android 中上传图片时遇到问题并且在 react-native 62.2 中遇到网络错误的用户,请使用此代码上传图片。上传将开始正常工作。
formData.append('file', {
name: 'photo.jpg',
uri: imageUrl,
type: 'image/jpeg',
});
推荐阅读
- firebase - Firebase 的签名错误 getSignedUrl()
- sharedpreferences - 在共享首选项中设置的字符串的更改未发布到 onSharedPreferenceChanged
- react-native - React native ActivityIndicator 即使在卸载后仍然保持动画
- python-3.x - 如何安装和运行openpose?
- android - react-native-maps + react-native-firebase Android 应用程序在启动时崩溃
- eclipse - 使用 Eclipse 运行 OpenCV 程序
- javascript - 将模板字符串传递给不带括号的函数
- azure-container-service - Azure 容器实例无法连接到 Internet(出站 http GET 请求失败)
- fish - 鱼壳可以在 if 语句中执行通配符通配符吗?
- python - 如何使用 python 从外部文件中随机选择一个问题