上传图片后,Vue Firebase 无法获取图片 url

Posted

技术标签:

【中文标题】上传图片后,Vue Firebase 无法获取图片 url【英文标题】:Vue Firebase cannot not fetch image url after uploading image 【发布时间】:2021-01-24 15:25:09 【问题描述】:
createMeetup( commit, getters , payload) 
  const meetup = 
    title: payload.title,
    location: payload.location,
    desciption: payload.desciption,
    date: payload.date.toISOString(),
    creatorId: getters.user.id
  ;
  let imageUrl;
  let key;
  firebaseApp
    .database()
    .ref("meetups")
    .push(meetup)
    .then(data => 
      key = data.key;
      return key;
    )
    .then(key => 
      const filename = payload.image.name;
      const ext = filename.slice(filename.lastIndexOf("."));
      return firebaseApp
        .storage()
        .ref("meetups/" + key + "." + ext)
        .put(payload.image);
    )
    .then(fileData => 
      // TODO: Image ref not found
      imageUrl = fileData.ref.getDownloadURL();
      return firebaseApp
        .database()
        .ref("meetups")
        .child(key)
        .update( imageUrl: imageUrl );
    )
    .then(() => 
      commit("createMeetup", 
        ...meetup,
        imageUrl: imageUrl,
        id: key
      );
    )
    .catch(err => 
      console.log(err);
    );
,

TODO 部分后报错。我认为它提供了承诺,但无法弄清楚如何处理它。错误是无效的道具:道具“src”的类型检查失败。期望的字符串,对象,得到了 Promise

【问题讨论】:

【参考方案1】:

getDownloadURL() 返回一个承诺,而不是一个字符串。需要使用promise异步获取URL,如documentation所示。

...
    .then(fileData => 
      return fileData.ref.getDownloadURL();
    )
    .then(imageUrl => 
      return firebaseApp
        .database()
        .ref("meetups")
        .child(key)
        .update( imageUrl: imageUrl );
    )
...

【讨论】:

以上是关于上传图片后,Vue Firebase 无法获取图片 url的主要内容,如果未能解决你的问题,请参考以下文章

上传图片后在 Firebase 中如何获取 Url? [复制]

无法以正确的顺序显示上传到 firebase 商店的图片

Flutter 无法上传从 multi_image_picker 获取的多张图片

成功将图像上传到 Firebase 存储后,Firebase 获取下载 URL

firebase 的调整大小扩展完成后获取下载网址

vue中input标签上传本地文件或图片后获取完整路径,如E:medicineOfCHstageImagexxx.jpg