【问题标题】:Firebase Storage: Object does not existFirebase 存储:对象不存在
【发布时间】:2021-07-16 08:57:15
【问题描述】:

我的 ReactJS 文件中有以下代码,用于将文件上传到 Firebase。

async function uploadFile() {
    console.log('starting UPLOAD ========');
    const blob = await fetch(mediaBlobUrl).then((r) => r.blob());
    const path = '/recordings/one';
    firebase
      .storage()
      .ref(path)
      .put(blob)
      .then(function (snapshot) {
        console.log('Uploaded complete');
      });
    console.log(`====> setURL is ${setURL} <=======`);
    storage.ref(path).getDownloadURL().then(setURL);
  }

第一次单击该按钮时出现此错误,但第二次单击该按钮时它可以正常工作。不知道发生了什么?

Firebase Storage: Object 'recordings/one' does not exist. (storage/object-not-found)

当它失败时,我确实注意到这是它试图点击的 URL (404)。注意 %2 而不是 "/"

https://firebasestorage.googleapis.com/v0/b/buerce.appspot.com/o/recordings%2Fone 404

【问题讨论】:

    标签: reactjs firebase


    【解决方案1】:

    那是因为您的 getDownloadURL 方法在实际上传文件之前运行。 putgetDownloadURL 方法都返回 promises。您的函数是异步的,因此我建议您对上传和 getDownloadURL 方法都使用 await,就像您在 fetch 方法上所做的那样。

    async function uploadFile() {
        console.log('starting UPLOAD ========');
        const blob = await fetch(mediaBlobUrl).then((r) => r.blob());
        const path = '/recordings/one';
        await firebase.storage().ref(path).put(blob)
    
        const setURL = await storage.ref(path).getDownloadURL()
        console.log(`====> setURL is ${setURL} <=======`);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 2021-04-14
      • 1970-01-01
      • 2020-08-02
      • 2023-03-10
      • 1970-01-01
      • 2020-02-12
      • 2018-06-11
      • 2019-05-05
      相关资源
      最近更新 更多