Python Pyrebase是否支持用putString()直接上传URI图片到Firebase存储
Pyrebase上传Data URI格式文件的实现方案
Pyrebase官方没有提供和JavaScript Firebase SDK完全对应的putString()内置方法,但你可以通过手动解析Data URI + 上传二进制流的方式实现完全相同的效果,不需要对图片做格式转换,也不需要将文件落地到本地磁盘。
具体实现步骤和示例代码如下:
- 拆分Data URI的头部信息和base64编码内容,提取文件的content-type
- 解码base64内容为二进制数据,用
BytesIO包装成类文件对象 - 直接调用Pyrebase的
put()方法上传即可
import pyrebase import base64 from io import BytesIO # 替换为你自己的Firebase项目配置 config = { "apiKey": "你的项目apiKey", "authDomain": "你的项目.firebaseapp.com", "projectId": "你的项目ID", "storageBucket": "你的项目.appspot.com", "messagingSenderId": "你的发送者ID", "appId": "你的应用ID", "databaseURL": "" # 未使用实时数据库可留空 } # 初始化Pyrebase firebase = pyrebase.initialize_app(config) storage = firebase.storage() def put_data_url(data_url, storage_path): # 拆分头部和编码内容 header, encoded = data_url.split(",", 1) # 提取文件类型 content_type = header.split(";")[0].split(":")[1] # 解码为二进制数据 binary_data = base64.b64decode(encoded) # 包装为类文件对象,无需本地存盘 file_obj = BytesIO(binary_data) # 上传并指定content-type storage.child(storage_path).put(file_obj, content_type=content_type) # 可选返回文件公开访问地址 return storage.child(storage_path).get_url(None) # 调用示例 img_data_uri = "data:image/png;base64,替换为你自己的图片Data URI内容" access_url = put_data_url(img_data_uri, "images/upload_test.png") print(f"上传完成,访问地址:{access_url}")
以上实现和JS端putString传入data_url参数的效果完全一致,全程内存操作,不需要额外做图片格式转换。
内容的提问来源于stack exchange,提问作者Bao Dinh
相关产品推荐
相关产品推荐

