сетевой запрос не смог отреагировать на загрузку изображения https Android
Я пытаюсь загрузить изображение через fetch api, но получаю ошибку сетевого запроса на реальном устройстве android. Я также пробовал много предложений от Google, но у меня ничего не работало.
мои зависимости:
"react-native": "0.62.0",
"axios": "^0.19.2",
"form-data": "^3.0.0",
"react": "16.11.0",
"react-redux": "^7.2.0",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"
мои фрагменты для загрузки изображений:
const imagePick = () => {
const formData = new FormData();
try {
const options = {
title: 'Select Avatar',
storageOptions: {
skipBackup: true,
path: 'images',
},
};
ImagePicker.showImagePicker(options, (response) => {
formData.append('avatar', {
uri: response.uri,
type: response.type,
name: response.fileName,
})
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
'Authorization': `Bearer ${authToken}`
},
body: formData
})
.then(res => {
console.log(res.status)
})
.catch(e => {
console.log(e)
})
});
} catch (e) {
toast("Unable to upload profile photo")
}
}
Я также использую защищенный URL-адрес https;
3 ответа
Я также столкнулся с той же проблемой, но я думаю, что эта проблема не связана с библиотекой axios, а из-за самого React Native.
Как уже упоминалось здесь, комментарий, это из-за Flipper.
Итак, пока React Native не будет работать над этим, вы можете прокомментировать указанную ниже строку из MainApplication.java.
initializeFlipper(это, getReactNativeHost().getReactInstanceManager());
Чтобы прокомментировать, введите // перед строкой выше
//initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
Я столкнулся с этим, когда обновлял пакеты, используемые приложением React Native, которое я создал некоторое время назад. Оказывается, эта ошибка возникает, когда я использую axios v0.27.2 (последняя на момент написания этой статьи), но функция загрузки работает нормально, когда я возвращаюсь к ранее установленной версии, которая была (есть) v0.24.0.
Надеемся, что эта старая версия будет удерживать крепость для кого-то еще, и мы ждем официального исправления проблемы. Я считаю слишком рискованным комментировать Flipper, потому что я, честно говоря, недостаточно знаю, чтобы понять, что мне это не нужно.
Была такая же проблема давно. Ответ довольно прост. Код работает на iOS, но, что интересно, не работал на Android.
Для Android измените с:
formData.append('avatar', {
uri: response.uri,
type: response.type,
name: response.fileName,
})
к:
formData.append('avatar', {
uri: response.uri,
type: `image/${response.type}`,
name: response.fileName,
})
Для меня тип mime изображения вызвал сбой axios. Хорошо работает без типа mime изображения на iOS.