Firebase API 提供了一个方便的函数 Storage::refFromUrl (source(,可将URL
转换为存储引用。
从源(位置.ts(看起来这是一个简单的正则表达式。
是否有等效的 Python 方法与google-cloud-storage
API 配合使用以获取存储桶和路径?
这是一个简单的正则表达式。 以下是我在几分钟内基于参考 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
,创建存储引用非常简单。