使用Pyrebase与Firebase Admin上传图片至Firebase Storage遇报错
解决你的Firebase存储上传问题
让我们一步步搞定你遇到的两个Firebase存储上传故障:
1. Pyrebase 400 Bad Request 错误
从报错信息里的请求URL https://firebasestorage.googleapis.com/v0/b/gs://test-bc3ec.appspot.com//o?name=example.PNG 能一眼看出问题:你的storageBucket配置多了gs://前缀。Pyrebase要求这个字段只填Bucket的纯名称,不需要协议头。
修正后的配置代码:
import pyrebase config = { "apiKey":"AIzaSyDphkVRuW39CyUbLmT5OkeZ2YmAUhwEUm4", "authDomain":"test-bc3ec.firebaseapp.com", # 建议补全完整的authDomain后缀 "databaseURL":"https://test-bc3ec.firebaseio.com/", "storageBucket":"test-bc3ec.appspot.com" # 去掉多余的gs://前缀 } firebase = pyrebase.initialize_app(config)
简化后的上传代码:
Pyrebase的put方法支持直接传入本地文件路径,不需要手动读取字节流,代码可以更简洁:
storage = firebase.storage() # child路径开头的斜杠可以省略,更符合规范 fbupload = storage.child("test/Captura.png").put("Captura.PNG")
2. Firebase Admin SDK 模块调用错误
报错TypeError: 'module' object is not callable是因为你把firebase_admin.storage这个模块当成函数调用了。Admin SDK的存储操作需要先获取存储桶对象,再进行上传。
修正后的Admin SDK代码:
import firebase_admin from firebase_admin import credentials, storage cred = credentials.Certificate("nuevo.json") firebase_admin.initialize_app(cred, { 'databaseURL':'https://test-bc3ec.firebaseio.com/', 'storageBucket': 'test-bc3ec.appspot.com' # 同样需要添加正确的Bucket配置 }) # 获取存储桶实例 bucket = storage.bucket() # 创建云端文件对象,指定存储路径 blob = bucket.blob("imagenes/Captura.PNG") # 上传本地文件 blob.upload_from_filename("Captura.PNG")
这两个问题的核心都是配置格式错误和SDK调用方式不规范,按照上面的修改应该就能正常完成图片上传了。
内容的提问来源于stack exchange,提问作者Angel Judath Alvarez
相关产品推荐
相关产品推荐

