gpt4 book ai didi

google-cloud-storage - Firebase 存储 - 通过 Python google-cloud-storage lib 上传 png 图像时出错

转载 作者:行者123 更新时间:2023-12-04 12:11:37 24 4
gpt4 key购买 nike

我正在运行基于 Firebase 实时数据库和 Firebase 存储的网络应用程序。

我需要每小时通过 Python google-cloud-storage lib 将新图像上传到 Firebase google 存储桶。
这是docs .

我的图片上传代码(img_src 路径正确):

    bucket = storage.bucket()
blob = bucket.blob(img_src)
blob.upload_from_filename(filename=img_path, content_type='image/png')

图像似乎已成功上传,但在 Firebase 存储中手动查看时,无法加载。 所有图像的规范似乎都是正确的。请将手动上传的图像(加载正常)的规范与损坏的图像进行比较。

enter image description here

enter image description here

感谢帮助!

最佳答案

每当您使用 Firebase 控制台上传图像时,都会自动生成访问 token 。但是,如果您使用任何 Admin SDK 或 gsutil 上传图像,则需要自己手动生成此访问 token 。

以下示例介绍了如何使用 Admin Python SDK 为图像生成和设置访问 token 。

import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage

# Import UUID4 to create token
from uuid import uuid4

cred = credentials.Certificate("path/to/your/service_account.json")
default_app = firebase_admin.initialize_app(cred, {
'storageBucket': '<BUCKET_NAME>.appspot.com'
})

bucket = storage.bucket()
blob = bucket.blob(img_src)

# Create new token
new_token = uuid4()

# Create new dictionary with the metadata
metadata = {"firebaseStorageDownloadTokens": new_token}

# Set metadata to blob
blob.metadata = metadata

# Upload file
blob.upload_from_filename(filename=img_path, content_type='image/png')

这是快速解释:
  • 导入 UUID4 库以创建 token 。 from uuid import uuid4
  • 创建一个新的 UUID4。 new_token = uuid4()
  • 使用键值对创建一个新字典。 metadata = {"firebaseStorageDownloadTokens": new_token}
  • 将其设置为 blob 的元数据。 blob.metadata = metadata
  • 上传文件。 blob.upload_from_filename(...)

  • 此解决方案可用于任何 Admin SDK。

    Firebase 支持 说这正在修复,但我认为任何有这个问题的人都应该走这条路而不是等待 Firebase 来解决这个问题。

    关于google-cloud-storage - Firebase 存储 - 通过 Python google-cloud-storage lib 上传 png 图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60080133/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com