有没有办法在触发getDownloadURL选项之前检查存储是否存在?
这是我的代码。
var storagedpurl = firebase.storage().ref(firebaseUser.uid + '/profilePicture/' + "displaypicture"); //URL to get current user dp
storagedpurl.getDownloadURL().then(function(url) { //Download dp from storage and display in circle img tag
var firebaseimageurl = url;
document.querySelector('img').src = firebaseimageurl;
}).catch(function(error) {
console.log(error.code);
});
如果我没有profilepicture的存储文件夹,我的控制台日志将继续显示我没有存储对象的错误。因此,如果存储对象存在,我希望它只运行该函数,是否可能?
答案 0 :(得分:1)
否强>
如果存在与否,您必须下载以检查。 Firebase API以正确的错误回应,告诉您失败的原因。
使用catch
块来处理错误:
.catch(function(error) {
switch (error.code) {
case 'storage/object_not_found': // <<< here you decide what to do when the file doesn't exist
// File doesn't exist
break;
case 'storage/unauthorized':
// User doesn't have permission to access the object
break;
case 'storage/canceled':
// User canceled the upload
break;
...
case 'storage/unknown':
// Unknown error occurred, inspect the server response
break;
}
});
可以使用完整的错误代码列表here。
答案 1 :(得分:0)
据我所知,firebase存储设计的方式是用户请求只存在的文件。因此,不存在的文件必须作为错误处理
See this documentation for how to handle this errors in storage
否则,我建议您使用getDownloadUrl。反过来又返回下面的承诺,
storageRef.child("file.png").getDownloadURL().then(onResolve, onReject);
function onResolve(foundURL) {
//stuff
}
function onReject(error) {
console.log(error.code);
}