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

火库存储不允许我检索图像 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贡献1468条经验 获得超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

      })

    })

  })


查看完整回答
反对 回复 6天前
?
MYYA

TA贡献1529条经验 获得超1个赞

查看完整回答
反对 回复 6天前
  • 2 回答
  • 0 关注
  • 10 浏览
慕课专栏
更多

添加回答

举报

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