# #javascript #firebase #react-native #expo #firebase-storage
Вопрос:
Я пытаюсь загрузить файлы в хранилище firebase с помощью expo, но при попытке загрузить файлы в хранилище firebase появляется предупреждение.
Это функция, которую я использую для выбора файлов с устройства
const pickDocument = async () => {
let result = await DocumentPicker.getDocumentAsync({
// type: "application/pdf",
});
if (result != null) {
setfile(result);
setfileName(result.name);
seturi(result.uri);
console.log(result);
}
};
Это функция, которую я использую для загрузки файлов
const uploadLessonSlide = async (uri) => {
const blob = await new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = function () {
resolve(xhr.response);
};
xhr.onerror = function (e) {
console.log("error");
console.log(e);
reject(new TypeError("Network request failed"));
};
xhr.responseType = "blob";
xhr.open("GET", uri, true);
xhr.send(null);
});
const ref = storage.ref().child("images");
const snapshot = await ref.put(blob);
blob.close();
return await snapshot.ref.getDownloadURL();
};
Это предупреждающее сообщение
[Unhandled promise rejection: TypeError: Network request failed]
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:600:10 in setReadyState
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:395:6 in __didCompleteResponse
at node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js:189:10 in emit
Это результат console.log() средства выбора файлов
Object {
"name": "sinhala-nisadas-10.jpg",
"size": 19346,
"type": "success",
"uri": "/data/user/0/host.exp.exponent/cache/ExperienceData/@shehan82/schoolyMobNative/DocumentPicker/97a75d14-1b7f-468b-aeae-59a6e65aa96b.jpg",
}
Сообщение об ошибке, которое я получил от xhr.onerror
Event {
"isTrusted": false,
}
Ответ №1:
вы можете попробовать заменить вызов xhr на fetch
const pickDocument = async () => {
let result = await DocumentPicker.getDocumentAsync({
// type: "application/pdf",
});
if (result != null) {
const r = await fetch(result.uri);
const b = await r.blob();
console.log(JSON.stringify(b));
console.log(result);
}
};