返回上传到firebase的文件的下载URL

时间:2017-05-11 09:06:43

标签: javascript firebase firebase-storage snapshot

是否有一种简单的方法可以将文件的下载网址上传到Firebase?

(我尝试过使用上传功能返回的快照,却找不到任何东西......)

     fileref.put(file).then(function(snapshot){
     self.addEntry(snapshot);   
     ///  return snapshot.url???
     });

3 个答案:

答案 0 :(得分:17)

Yamil引用的文档 - Firebase javascript SDK file upload - 建议使用快照的ref属性来调用getDownloadURL方法,该方法返回包含下载链接的承诺:

以您的代码为出发点:

fileref.put(file)
   .then(snapshot => {
       return snapshot.ref.getDownloadURL();   // Will return a promise with the download link
   })

   .then(downloadURL => {
      console.log(`Successfully uploaded file and got download link - ${downloadURL}`);
      return downloadURL;
   })

   .catch(error => {
      // Use to signal error if something goes wrong.
      console.log(`Failed to upload file and get link - ${error}`);
   });

我知道这似乎是不必要的努力,您应该能够通过快照的属性获取链接,但这是Firebase团队推荐的 - 他们可能有充分的理由这样做。

答案 1 :(得分:1)

要从快照中获取默认情况下创建的网址,您可以使用downloadURL,这意味着snapshot.downloadURL

请务必使用.on('state_changed')Documentation here始终跟踪上传进度。

答案 2 :(得分:-2)

使用基于用户的安全规则时in official docs

//只有个别用户才能写入"他们的"图像

  match /{userId}/{imageId} {
    allow write: if request.auth.uid == userId;
  }
快照.downloadURL检索到的

url正在公开userId。如何克服这种安全风险。