【问题标题】:Download all files from firebase storage using python使用 python 从 firebase 存储中下载所有文件
【发布时间】:2018-01-10 06:34:22
【问题描述】:

我正在做一个项目,用户将图像上传到 Firebase 存储中,我想检索所有这些图像并在本地存储。

使用pyrebase 我可以设法下载单个图像(如果我知道文件名或下载 URL)

storage = firebase.storage()
storage.child("images/example.jpg").download("img")

但在我的情况下,我可能不知道文件的名称或下载 URL 是什么。 Pyrebase 只支持下载单个文件,文件名也要知道。

是否有其他方法可以列出/下载 Firebase 存储中的所有文件?代码 sn-p 会很有帮助。

【问题讨论】:

    标签: python python-3.x firebase firebase-storage


    【解决方案1】:

    Pyrebase 存储支持list_files() 函数。您可以使用它来循环浏览给定文件夹中的所有文件,并使用 download_to_filename() 函数在每次传递时下载。

    类似这样的:

    storage = firebase.storage()
    datadir = 'path/to/local/directory/'
    
    all_files = storage.child("myfirebasefolder").list_files()
    
    for file in all_files:
        try:
            file.download_to_filename(datadir + file.name)
        except:
            print('Download Failed')
    

    【讨论】:

      【解决方案2】:

      这里的文件名是 1,2,3,.... 格式。在这里,您还必须添加 json 帐户,方法是从 firebase 设置下载它。

      config={
          "serviceAccount":"abc.json"
      }
      
      firebase=pyrebase.initialize_app(config)
      storage = firebase.storage()
      
      ab=str(1)    
      all_files = storage.child("images").list_files() //Enter the name of the folder    
      for file in all_files:            
      try:
              print(file.name)    
              z=storage.child(file.name).get_url(None)    
              storage.child(file.name).download(""+path+"/"+ab+".mp3")    
              x=int(ab)     
              ab=str(x+1)    
      except:    
              print('Download Failed')    
      

      【讨论】:

        【解决方案3】:

        通常您会将上传文件的路径存储到实时数据库或其他一些数据存储中。如果您想稍后对其进行更改,这使您可以以编程方式迭代上传的文件。

        或者,您可以使用list_blobs() API,如 Cloud Storage python SDK 的documentation 中所示。

        【讨论】:

        • 能否提供代码sn-p或参考,我该如何实现它
        • 嗨,Doug,有一个(新的?)云存储列表 API cloud.google.com/storage/docs/json_api/v1/objects/list
        • @philshem 是的,我相信这是新的,但我认为这还没有归结为管理 SDK。
        • @philshem 更正 - 它现在在管理 SDK 中(至少是 node 和 Java),但它们在不同的语言中有不同的方法名称。不知道python。
        猜你喜欢
        • 2019-12-10
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 2023-04-01
        • 2021-04-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多