[使用python从Firebase存储下载文件链接

问题描述 投票:-1回答:2

似乎缺少有关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或其他第三方库。

python firebase flask firebase-storage
2个回答
0
投票

一旦有了参考,就可以通过调用getBytes()或getStream()从Cloud Storage下载文件。如果您希望使用其他库下载文件,则可以使用getDownloadUrl()获得下载URL。

下载到内存中使用getBytes()方法将文件下载到byte []。这是下载文件的最简单方法,但是它必须将文件的全部内容加载到内存中。如果您请求的文件大于应用程序的可用内存,则应用程序将崩溃。为了防止出现内存问题,getBytes()占用了最大的字节下载量。将最大大小设置为您知道应用程序可以处理的大小,或使用其他下载方法。


0
投票

确定,我仔细阅读了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存储,而只是将 admin作为firebase_admin传递。因此,列出存储桶中的所有对象:https://cloud.google.com/storage/docs/listing-objectsblobs = list(bucket.list_blobs())

© www.soinside.com 2019 - 2024. All rights reserved.