是否有一种简单的方法可以将文件的下载网址上传到Firebase?
(我尝试过使用上传功能返回的快照,却找不到任何东西......)
fileref.put(file).then(function(snapshot){
self.addEntry(snapshot);
/// return snapshot.url???
});
答案 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。如何克服这种安全风险。