Я использую react-native-image-picker (^0.28.0)
вместе с rn-fetch-blob (^0.10.15)
.До сих пор он работает при использовании симулятора, но когда я использую его на реальном iPhone, изображение не загружается, оно не загружается со следующей ошибкой, которая отслеживается обещанием.
"Error: Could not connect to the server."
(Да, сервер запущен и работает)
Если вы видите это, вы можете подумать, что это проблема с бэкендом, но другие запросы хорошо работают на реальном устройстве, только у этого есть проблемы.Отправляется запрос изображения:
{
data: "RNFetchBlob-file:///var/mobile/Containers/Data/Application/843A96A1-0000-40D3-B50F-95D69B94B87A/tmp/5D22283B-2014-4E9E-AC3E-AE677D91A366.jpg"
filename: "IMG_6834.jpg"
name: "pictures"
type: "image/jpeg"
}
Единственное отличие устройства симулятора и моего iPhone - это путь данных.Где на симуляторе это похоже на "RNFetchBlob-file:///Users/marian-mac/Library/Developer/CoreSimulator/Devices/....etc"
Любая идея, почему на этом симуляторе должно отличаться?Кажется, он отправляет тот же запрос.
Некоторая дополнительная информация, когда я предварительно просматриваю изображение в компоненте Image, оно тоже хорошо видно.Таким образом, кажется, что путь на реальном iPhone правильный.
Это метод загрузки изображения
uploadPicture: function(data, token) {
return RNFetchBlob.fetch('POST', Constants.baseUrl + '/picture', {
Authorization: "Bearer " + token,
'Content-Type': 'multipart/form-data;boundary=***BOUNDARY***'
}, data);
},
И вот как я создаю массив запроса изображения, this.state.imagesсодержит данные средства выбора изображений.
this.state.images.forEach((image) => {
reqData.push({
data: image.imageFile,
filename: image.fileName.split('.')[0] + '.jpg',
name: 'pictures',
type: image.type
})
});