使用 VueJs 在 firebase 中上传和下载存储图像

恩里克GF

我正在使用 Vue/vuex 和 firebase 构建这个简单的应用程序,我想方便用户上传图像,一旦应用程序更新,这些图像就会从 firebase 存储中获取,使用新上传的图像修改当前数据库这是我的代码:

createMeet({ commit, getters }, payload) {
      const newMeet = {
        title: payload.title,
        description: payload.description,
        location: payload.location,
        date: payload.date,
        video_url: payload.video_url,
        idCreator: getters.getUser.id
      }
      let image_url;
      let key;
      firebase.database().ref('meetUps').push(newMeet)
        .then((data) => {
          console.log(data)
          key = data.key
          return key
        })
        .then(key => {
          const filename = payload.image.name
          const fileExtension = filename.slice(filename.lastIndexOf('.'))
          return firebase.storage().ref('meetUps/' + key + '.' + fileExtension).put(payload.image)
        })---the image get storaged in the firebase storage

        .then(fileData => {
          image_url = fileData.metadata.downloadURLs()
          return firebase.database().ref('meetUps/').child(key).update({ image_url: image_url })
        })--------->updating in the database the storaged object in there passing a new paranmeter
                    image_url, with a new value contained in variable iimage_url
        .then(() => {
          commit('meetsCreator', {
            ...newMeet,
            image_url: image_url,------------>putting changes in some mutation which modifies the state
            id: key,

          })
        })
        .catch(error => {
          console.log(error)
        })
      // commit('meetsCreator',newMeet)
    },

图像被推送到 firebase 存储,但是一旦我尝试修改数据库,使用 downloadUrls 添加这个新元素(图像),就行不通了。有什么建议吗?....提前致谢!!!

雷诺塔内克

您需要使用getDownloadURL()JavaScript SDK 中方法,方法是异步的,并返回使用下载 URL 解析的 Promise。

因此,以下应该可以解决问题:

  //...
  firebase.database().ref('meetUps').push(newMeet)
    .then(ref => {
      key = ref.key
      const filename = payload.image.name
      const fileExtension = filename.slice(filename.lastIndexOf('.'))
      return firebase.storage().ref('meetUps/' + key + '.' + fileExtension).put(payload.image)
    })
    .then(uploadTaskSnapshot => {
       return uploadTaskSnapshot.ref.getDownloadURL();
    .then(url => {
      return firebase.database().ref('meetUps/').child(key).update({ image_url: url })
    })
    //....

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Vuejs获取Firebase存储中上传文件的URL

如何在 firebase 存储中上传 PDF 文件并生成下载 URL 并使用 Flutter 保存 firebase?

如何在 Firebase 中上传和存储多个图像?

使用Vuejs从本地存储上传图像

使用Firebase进行Spring Boot和vueJs身份验证

VueJS和Firebase存储:如何等待图像上传完成后再向数据库提交URI?

使用 firebase-admin 将图像上传到 Firebase 存储

使用Firebase和Swift上传图像(iOS)

Firebase存储-在Android中上传多个图像文件

尝试使用 Firebase 存储和 Firestore 数据库上传图像 - 遇到地图错误

使用Vuejs上传文件

使用 Vuefire 在 Vuejs 中检索 Firebase 数据

使用Javascript删除firebase中的记录 - Vuejs

使用 Vuejs 修改 Firebase 中的数据

如何使用Golang将图像上传到Firebase存储

使用当前用户的UID将图像上传到Firebase存储

未定义的类“ StorageReference”。使用flutter在Firebase中上传图像时

如何使用 Flask 在文件夹中上传或存储图像?

使用VueJs和Laravel上传多个文件

使用VueJS,axios和Laravel上传文件

从Firebase存储下载图像

如何使用Fresco下载和显示Firebase存储映像

使用 async/await 和 firebase firestore 下载图像

在firebase android中上传多个图像

如何使用firebase函数处理抓取的图像并上传到firebase存储?

在 Flutter Web 上使用 firebase_storage 4.0.0 将图像上传到 Firebase 存储?

使用Antd上传操作将图像上传到Firebase存储时出现问题

Ionic 2 应用程序:在 Firebase 存储中上传相同的图像

无法使用VueJS渲染图像