Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Expo firebase 7.9.0 can';无法下载URL_Javascript_Firebase_React Native_Expo_Firebase Storage - Fatal编程技术网

Javascript Expo firebase 7.9.0 can';无法下载URL

Javascript Expo firebase 7.9.0 can';无法下载URL,javascript,firebase,react-native,expo,firebase-storage,Javascript,Firebase,React Native,Expo,Firebase Storage,我的方法确实成功地将图像从expo加载到firebase存储,但我似乎无法获得下载URL const uploadImage = async (uri) => { const uniqid = () => Math.random().toString(36).substr(2, 9); const ext = uri.split('.').pop(); // Extract image extension const filename = `${uniqid()}.${ext}`;

我的方法确实成功地将图像从expo加载到firebase存储,但我似乎无法获得下载URL

const uploadImage = async (uri) => {
const uniqid = () => Math.random().toString(36).substr(2, 9);
const ext = uri.split('.').pop(); // Extract image extension
const filename = `${uniqid()}.${ext}`; // Generate unique name
const response = await fetch(uri);
const blob = await response.blob();

var ref = firebase
  .storage()
  .ref()
  .child('images/' + filename);
ref.getDownloadURL().then((url) => console.log(url));
return ref.put(blob);
})

这是我得到的错误

FirebaseStorageError {
“代码”:“未找到存储/对象”, “消息”:“Firebase存储:对象‘images/gebwu7tnh.jpg’不存在。”, “名称”:“FirebaseError”, “服务器响应”:{ “错误”:{ “代码”:404, “消息”:“未找到。无法获取对象”, “状态”:“获取对象” }
}“

这是我发现的帮助我进行研究的东西。我确实重构了我的firebase以使用更高阶的组件。这是我的firebase方法

 uploadImageAsync: async (uri) => {
const uniqid = () => Math.random().toString(36).substr(2, 9);
const ext = uri.split('.').pop(); // Extract image extension
const filename = `${uniqid()}.${ext}`; // Generate unique name
const ref = firebase
  .storage()
  .ref()
  .child('images/' + filename);
const blob = await new Promise((resolve, reject) => {
  const xhr = new XMLHttpRequest();
  xhr.onload = function () {
    resolve(xhr.response);
  };
  xhr.onerror = function (e) {
    console.log(e);
    reject(new TypeError('Network request failed'));
  };
  xhr.responseType = 'blob';
  xhr.open('GET', uri, true);
  xhr.send(null);
});

const snapshot = await ref.put(blob);

blob.close();
const imgUrl = await snapshot.ref.getDownloadURL();
console.log(imgUrl);
return imgUrl;
},, };

下面是我如何在我的组件中实现它

 const setImage = async (uri) => {
try {
  return await firebase.uploadImageAsync(uri);
} catch (error) {
  console.log(error);
}

})

您的代码似乎为文件名生成了一个唯一的ID,然后尝试确定该ID的下载URL。Firestore存储中似乎不太可能存在该唯一ID的文件,这就是您收到错误消息的原因。谢谢frank,您是对的,我确实找到了解决方案,我将很快发布