为了账号安全,请及时绑定邮箱和手机立即绑定

火库存储不允许我检索图像 URL

火库存储不允许我检索图像 URL

呼啦一阵风 2022-09-23 16:55:19
我已成功将文件上传到火库存储。但是,当我包含状态已更改的 .on 函数时,控制台会引发以下错误:错误:引用.push 失败:第一个参数在属性“见证.clientImg”中包含未定义的参数我正在尝试重新获取图像URL并将其放在变量中。我的代码如下所示,任何人都可以提供帮助吗?  let itemsRef = firebase.database().ref('testimonials');  let imgFile = this.state.currentImg;  let imageRef;  let imgURL;  if (imgFile){   imageRef = firebase.storage().ref("testimonialPics/"+imgFile.name).put(imgFile);   imageRef.on('state_changed', (snapshot)=>{    console.log(snapshot);   })  let clientObj = {    name: this.state.currentName,    feedback: this.state.currentComments,    approved: false,    clientImg: imgURL  }  itemsRef.push(clientObj);  console.log(clientObj);  this.setState({    currentName: "",    currentComments: "",    currentImg: null  })
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您没有在此代码中的任何位置给出值,这与您调用时的事实相匹配(如错误消息所述,您无法将未定义的值写入数据库)imgURLundefineditemsRef.push(clientObj)


看起来您正在尝试将下载 URL 写入数据库。为此,我将密切关注文档中的示例。但根据您当前的代码,它应该是这样的:


  let itemsRef = firebase.database().ref('testimonials');

  let imgFile = this.state.currentImg;

  let imageRef;

  let imgURL;


  if (imgFile){

   let ref = firebase.storage().ref("testimonialPics/"+imgFile.name); 

   let task = ref.put(imgFile);

   task.then(() => {

    // this runs when the upload has completed

    ref.getDownloadURL().then(function(downloadURL) {

      // this runs when the download URL has been determined

      let clientObj = {

        name: this.state.currentName,

        feedback: this.state.currentComments,

        approved: false,

        clientImg: downloadURL

      }


      itemsRef.push(clientObj);


      this.setState({

        currentName: "",

        currentComments: "",

        currentImg: null

      })

    })

  })


查看完整回答
反对 回复 2022-09-23
?
MYYA

TA贡献1868条经验 获得超4个赞

查看完整回答
反对 回复 2022-09-23
  • 2 回答
  • 0 关注
  • 52 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信