Flutter Firebase Storage上传突发unknown错误的排查求助
检查Firebase Storage规则是否变动
即便没改代码,也可能控制台的存储规则被误改。先确认规则是否允许当前用户上传,测试环境可临时调整规则(生产环境记得改回):rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if request.auth != null; // 测试时可临时用 allow read, write: if true; 排查是否是规则问题 } } }验证模拟器网络与真机对比
模拟器可能出现网络异常,先切换到真机测试,看是否能正常上传。或者重启模拟器,重置模拟器网络设置,关闭代理、VPN后重试。查看Firebase控制台的详细错误日志
去Firebase控制台的「存储」-「监控」-「错误报告」,或者「项目设置」-「日志」里搜索相关报错,服务器端的日志会比客户端的unknown错误更具体,能定位问题根源。确认本地文件有效性与iOS权限
上传前打印print(file.exists())确认文件存在且路径正确。另外检查iOS模拟器中应用的照片访问权限是否被禁用,去模拟器的「设置」-「应用」里找到你的App,确认照片权限已开启;同时确保Info.plist里配置了NSPhotoLibraryUsageDescription权限描述。回退firebase_storage版本测试
升级最新版本后问题仍存在,可能是新版本兼容性问题。回退到之前正常的11.2.2版本,执行flutter pub get,删除iOS端的Podfile.lock后重新pod install,再运行测试。重置Firebase本地配置文件
删除iOS项目Runner目录下的GoogleService-Info.plist,从Firebase控制台重新下载最新的配置文件替换。然后执行flutter clean清理缓存,再依次运行flutter pub get、pod install后重启项目。
内容的提问来源于stack exchange,提问作者Matthias Mayer

