У меня есть компонент выбора изображений в моем приложении React-Native, который позволяет пользователям выбирать изображение. Затем он сохраняется в this.state.imageUri. Моя цель - загрузить изображение в хранилище Firebase, а затем связать его с базой данных в реальном времени, чтобы к нему можно было получить доступ по отношению к определенному элементу списка c. Я использую для этого две функции:
uriToBlob = (uri) => {
console.log('uri: ' + uri)
return new Promise(function(resolve, reject) {
try {
var xhr = new XMLHttpRequest();
xhr.open("GET", uri);
xhr.responseType = "blob";
xhr.onerror = function() {reject("Network error.")};
xhr.onload = function() {
if (xhr.status === 200) {resolve(xhr.response)}
else {reject("Loading error:" + xhr.statusText)}
};
xhr.send();
}
catch(err) {reject(err.message)}
})
}
и
uploadToFirebase = (blob) => {
console.log('uploading to firebase')
return new Promise((resolve, reject)=>{
var storageRef = firebase.storage().ref();
storageRef.child('uploads/photo.jpg').put(blob, {
contentType: 'image/jpeg'
}).then((snapshot)=>{
blob.close();
resolve(snapshot);
}).catch((error)=>{
reject(error);
});
});
}
После нажатия кнопки я запускаю этот код:
this.uriToBlob(this.state.imageUri).then(function(blob) {
return this.uploadToFirebase(blob)
});
Однако я всегда получать ошибку
[Необработанное отклонение обещания: TypeError: undefined не является объектом (оценка 'this.uploadToFirebase')]
Я не работал с Firebase Storage или blobs раньше, поэтому я был бы очень признателен за понимание того, почему это не работает. Спасибо!