You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法上传文件到Firebase Storage,持续提示未知StorageException错误

解决方案

1. 排查存储桶权限规则

默认的Firebase Storage规则会禁止未授权的读写操作,这是触发未知错误的最常见原因。你可以先到Firebase控制台进入「Storage」-「规则」页面,临时替换为测试规则验证问题:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if true;
    }
  }
}

验证通过后务必修改为符合业务安全要求的规则,比如添加登录态校验request.auth != null,避免数据泄露

2. 修正依赖版本配置

你当前的依赖顺序有误,Firebase BOM 必须放在所有Firebase相关依赖的最前面,用来统一管理版本号,避免不同组件版本不兼容导致的异常:

// 优先引入BOM管理版本
implementation platform('com.google.firebase:firebase-bom:29.0.0')
// 后续Firebase依赖无需声明版本号
implementation 'com.google.firebase:firebase-storage'
implementation 'com.google.firebase:firebase-database'
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-analytics'

3. 校验文件Uri有效性

代码中使用的noticeUri未做有效性校验,你需要提前确认:

  • Uri不为空,指向的本地文件真实存在
  • 应用已经申请了对应文件的读取权限,避免第三方提供的Content Uri没有访问权限

4. 打印完整错误堆栈定位问题

当前失败回调只打印了错误信息,无法定位底层异常,建议补充完整堆栈打印:

.addOnFailureListener(e -> {
    dismissMainDialog();
    // 补充堆栈打印,排查底层网络/权限问题
    Log.e("UPLOAD_ERROR", "上传失败", e);
    showSnackBar(e.getMessage());
})

其他可选排查点

  • 确认设备网络可以正常访问Firebase服务,无代理或防火墙拦截
  • 确认google-services.json中的storage_url字段和控制台存储桶地址一致
  • 确认存储桶所属区域和Firebase项目默认区域匹配,不要跨区域创建存储桶

额外优化提示

你当前的进度计算逻辑存在整数除法问题,会导致进度始终显示为0,建议修改为:

int percent = (int) ((snapshot.getBytesTransferred() * 100.0) / snapshot.getTotalByteCount());

内容的提问来源于stack exchange,提问作者abusaeed2433

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:15:02