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

Firebase图片上传失败求助:出现StorageException -13010(404)错误

解决Firebase Storage上传图片时出现的404/会话终止错误

看起来你遇到的这个错误(Code: -13010,HttpResult: 404,服务器终止上传会话)有点迷惑人——虽然提示“对象不存在”,但实际问题往往出在路径配置、文件访问、身份验证或者SDK本身的问题上。我整理了几个常见的排查和解决方向,你可以逐一试试:

  • 检查Storage引用的路径是否正确
    很多时候路径的小错误会导致这类问题:比如路径开头多了斜杠(比如写成/images/photo.jpg,正确的应该是images/photo.jpg,因为child()方法会自动处理路径分隔);或者路径里包含了Firebase不支持的特殊字符(虽然大部分字符都允许,但像#、$这类如果没转义可能有问题)。建议用时间戳或者随机字符串作为文件名,避免重复和特殊字符问题。

  • 确认你能正常读取要上传的图片文件
    选择图片后,要确保你的App有读取该文件的权限:

    • 如果是Android 6.0+,有没有动态申请READ_EXTERNAL_STORAGE权限?
    • 如果是Android 10+,是不是用了MediaStore API获取文件Uri,而不是直接访问文件路径?直接路径访问在Android 10+会被限制,导致文件无法读取,进而上传会话被终止。
  • 验证匿名登录是否真的完成
    虽然你设置了允许匿名登录,但要确保代码里已经完成了匿名登录流程,并且在登录成功后再执行上传操作。Firebase Storage即使权限设为公开,有些情况下也需要有效的用户会话(哪怕是匿名的)才能建立上传连接。你可以在上传前加上匿名登录的代码,确保登录成功后再触发上传。

  • 检查Firebase Storage规则的配置
    确认你的规则确实是公开读写的,配置应该是这样的:

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

    注意规则的语法是否正确,有没有少写括号或者匹配错误,配置后要记得发布规则。

  • 更新Firebase SDK到最新版本
    旧版本的Firebase Storage SDK可能存在上传会话终止的已知bug,更新到最新版本通常能解决这类兼容性问题。你可以在项目的build.gradle里把Firebase相关依赖的版本升级到最新稳定版。

另外,给你一个简单的上传示例代码(Android Kotlin),可以参考下正确的流程:

// 先完成匿名登录
FirebaseAuth.getInstance().signInAnonymously()
    .addOnCompleteListener { authTask ->
        if (authTask.isSuccessful) {
            // 假设这里是你从相册选择后获取的图片Uri
            val imageUri = ...
            
            // 创建Storage引用,用时间戳做文件名避免重复
            val storageRef = FirebaseStorage.getInstance()
                .reference
                .child("uploaded_images/${System.currentTimeMillis()}.jpg")
            
            // 开始上传
            storageRef.putFile(imageUri)
                .addOnSuccessListener {
                    Log.d("StorageUpload", "图片上传成功!")
                    // 这里可以获取下载链接等操作
                }
                .addOnFailureListener { exception ->
                    Log.e("StorageUpload", "上传失败", exception)
                }
        } else {
            Log.e("AuthError", "匿名登录失败", authTask.exception)
        }
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:51:48