Firebase API提供了便捷功能Storage::refFromUrl(source),可将URL
转换为存储引用。
来自the source (location.ts),它看起来像是一个简单的正则表达式。
是否存在与google-cloud-storage
API配合使用的等效Python方法来获取存储区和路径?
答案 0 :(得分:1)
这是一个简单的正则表达式。这是我在几分钟后根据参考Javascript实现汇总的内容:
def _urlToBucketPath (url):
"""Convert a Firebase HTTP URL to a (bucket, path) tuple,
Firebase's `refFromURL`.
"""
bucket_domain = '([A-Za-z0-9.\\-]+)'
is_http = not url.startswith('gs://')
if is_http:
path = '(/([^?#]*).*)?$'
version = 'v[A-Za-z0-9_]+'
rex = (
'^https?://firebasestorage\\.googleapis\\.com/' +
version + '/b/' + bucket_domain + '/o' + path)
else:
gs_path = '(/(.*))?$'
rex = '^gs://' + bucket_domain + gs_path
matches = re.match(rex, url, re.I)
if not matches:
raise Exception('URL does not match a bucket: %s' % url)
bucket, _, path = matches.groups()
if is_http:
path = urllib.parse.unquote(path)
return (bucket, path)
我已要求将其添加到Firebase功能列表中,如果显示出来,我希望它会在firebase_admin.storage
中公开使用bucket
和path
可以轻松创建存储引用。