似乎缺少有关Firebase python API的文档。我想通过我的Flask应用程序获取Firebase存储上一个文件夹中所有文件的下载链接。我的最新方法是:
from firebase_admin import storage
bucket = storage.bucket()
blob = bucket.blob('articles/'+aid+'/resources')
server_path = blob.generate_signed_url(datetime.timedelta(seconds=999999999), method='GET')
print(server_path)
问题是blob = bucket.blob('articles/'+aid+'/resources')
指向存储中的文件夹,当我尝试获取该文件夹的下载链接时,该链接不起作用。
现在我可以用2种不同的方式解决这个问题:
不幸的是,我找不到任何有关如何在python中执行这两项任务的文档。PS。我已经在使用firebase_admin初始化我的应用程序,而我不希望切换到pyrebase或其他第三方库。
一旦有了参考,就可以通过调用getBytes()或getStream()从Cloud Storage下载文件。如果您希望使用其他库下载文件,则可以使用getDownloadUrl()获得下载URL。
下载到内存中使用getBytes()方法将文件下载到byte []。这是下载文件的最简单方法,但是它必须将文件的全部内容加载到内存中。如果您请求的文件大于应用程序的可用内存,则应用程序将崩溃。为了防止出现内存问题,getBytes()占用了最大的字节下载量。将最大大小设置为您知道应用程序可以处理的大小,或使用其他下载方法。
确定,我仔细阅读了firebase_admin文档,它说:
https://firebase.google.com/docs/storage/admin/start
您可以在以下位置使用Admin SDK返回的存储桶引用与官方的Google Cloud Storage客户端库结合使用上传,下载和修改与以下内容相关的存储桶中的内容您的Firebase项目。请注意,您不必进行身份验证使用Firebase Admin SDK时的Google Cloud Storage库。的Admin SDK返回的存储桶引用已通过身份验证使用用于初始化Firebase应用程序的凭据。
所以我去了google.cloud文档,我使用了他们的代码,而不必初始化google.cloud存储,而只是将blobs = list(bucket.list_blobs())