我正在运行基于Firebase实时数据库和Firebase存储的Web应用程序。
我需要每小时通过Python google-cloud-storage lib将新图像上传到Firebase google bucket。这是docs。
我的图像上传代码(img_src路径正确):
bucket = storage.bucket()
blob = bucket.blob(img_src)
blob.upload_from_filename(filename=img_path, content_type='image/png')
图像似乎已成功上传,但是在Firebase Storage中手动查看时,它不会加载。所有图像规格似乎都是正确的。请比较手动上传的图片(加载正常)与损坏的图片的规格。
感谢您的帮助!
[无论何时使用Firebase控制台上传图像,都将设置“访问令牌”。但是,如果您使用任何Admin SDK或gsutil上传图像,此“访问令牌”将丢失。
这里是使用Admin Python SDK上载了已设置“访问令牌”的图像的解决方案的完整代码段。
请记住,此解决方案适用于任何Admin SDK。
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')
这里是快速说明:
from uuid import uuid4
new_token = uuid4()
metadata = {"firebaseStorageDownloadTokens": new_token}
blob.metadata = metadata
blob.upload_from_filename(...)
Firebase支持人员说,此问题已得到解决,但我认为每个人都应实施此解决方法。尤其是由于这个问题而停止了开发过程。