当前位置: 首页 > 知识库问答 >
问题:

Firebase存储-通过Python google云存储库上传png图像时出错

空浩淼
2023-03-14

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

我需要通过Python google云存储库每小时将新图像上传到Firebase google bucket。这是文件。

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

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

图像似乎已成功上传,但在Firebase存储中手动查看时,图像不会加载。所有图像的规格看起来都是正确的。请将手动上传图像(加载良好)的规格与损坏图像进行比较。

谢谢帮忙!

共有1个答案

慕金林
2023-03-14

每当您使用 Firebase 控制台上传图片时,系统都会自动生成一个访问令牌。但是,如果您使用任何 Admin SDK 或 gsutil 上传图片,则需要自行手动生成此访问令牌。

下面是有关如何使用 Admin Python 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')

以下是快速解释:

    < li >导入UUID4库以创建令牌。< code >从uuid导入uuid4 < li >创建新的UUID4。< code > new _ token = uuid 4() < li >用键值对创建新字典。< code > metadata = { " firebaseStorageDownloadTokens ":new _ token } < li >将其设置为blob的元数据。< code > blob . metadata = metadata < li >上传文件。<代码> blob.upload_from_filename(...)

此解决方案可以针对任何管理员 SDK 实现。

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

 类似资料:
  • 我正在使用以下方法来保存信息。 我已经删除了一些用于访问数据库的代码行。 这是日志猫的描述。 E/StorageException:已发生StorageException。发生未知错误,请检查HTTP结果代码和内部异常以获取服务器响应。代码:-13000 HttpResult:0 E/AndroidRuntime:FATAL EXCEPTION:Firebase Storage-Upload-1

  • 我有一个firebase帐户,我想以编程方式上传一些照片到firebase存储。为此,我使用了google cloud java storage API。我配置权限和其他权限。我可以成功地创建桶,斑点。然而,当我试图上传一张图片时,要么它的大小为0,要么它无法下载(不生成URL)。下面是我使用的代码; 任何建议都很感激。问候。

  • 我正在尝试上传图像到firebase,以及其他字符串和双数据类型。 我现在正在考虑两个选项,一个是上载imageUrl到firebase实时数据库,当我检索它时,我将检索一个imageUrl并将其转换为图像。 谢谢你的帮助!我很感激。

  • 我从Firebase存储中获取图像,用相机拍照,或者从图书馆中挑选一张。当其中一个完成时,我有一个类来存储,以便在需要时使用它。 现在我需要将此图像上传到Firebase存储(修改或新建,无所谓)。Firebase允许我使用以下选项之一:或,每个选项分别需要或。 我怎么能把我的,并从它获得一个或用于上传? -- 或者,为了解决这个问题,当我从Firebase存储中检索图像时,如何获取图像的? 无论

  • 问题内容: 我想将图像的下载URL放入Firebase数据库中。我可以将图像上传到存储中,但无法弄清楚如何将URL与其余的“帖子”一起放入数据库。 问题答案: 像这样组织您和func: 接下来,只需连接并保存到您的节点即可。 您也可以查看我有关上传数据并将URL保存到数据库的答案 希望能帮助到你

  • 以下是我的上传代码: 编辑:我将base64字符串复制到一个在线转换器中,看起来不错,它返回了正确的图像。看起来,数据没有问题。firebase的处理方式有问题。 编辑:我尝试显式地将类型设置为image/jpeg而不是image/jpg,如下所述:当Firestorage关闭时显示图像的正确方式,或者在Firestorage for iOS中加载预览时出错,但没有区别。