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

Firebase Storage上传图片报错:Object does not exist at location(-13010/404)

Firebase Storage上传报错(Code: -13010 HttpResult: 404)排查

我尝试将图片上传至Firebase Storage,但始终出现如下错误:

E/StorageException: StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404

我的代码实现如下:

private final StorageReference storageRef = FirebaseStorage.getInstance().getReference("upload");
//uploading pic to firebase storage
public void send(View view) {
        if (uri == null)
            return;
        StorageReference _storageRef = storageRef.child(System.currentTimeMillis() + "." + getExtension(uri));

        _storageRef.putFile(uri)
                .addOnSuccessListener(taskSnapshot ->
                        Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show())
                .addOnFailureListener(e ->
                        Toast.makeText(MainActivity.this, "fails", Toast.LENGTH_SHORT).show());

    }

 private String getExtension(Uri uri) {
        if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
            ContentResolver cr = getContentResolver();
            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
            return mimeTypeMap.getExtensionFromMimeType(cr.getType(uri));
        } else {
            return MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new file(uri.getPath())).toString());
        }
    }

错误信息再次确认:

E/StorageException: StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404

我的Firebase Storage规则为:

allow read, write: if true;


可能的原因及解决办法

1. 文件Uri无效或文件不存在

  • 检查uri是否指向本地存在的有效图片文件,在send方法中添加日志打印uri.toString(),确认路径正确,且文件未被删除、移动,同时确保App有读取该文件的权限。
  • 如果是通过相册/相机获取的Uri,核对获取逻辑是否正确,比如相机拍照后的Uri是否正确保存,相册选择的文件是否授予了读取权限。

2. getExtension方法存在错误

  • 代码中new file(uri.getPath())是小写的file,Java类名需大写为File,修正为new File(uri.getPath()),避免编译或运行时错误。
  • 针对file scheme的Uri,MimeTypeMap.getFileExtensionFromUrl的可靠性较低,建议直接从文件名截取后缀:
    File file = new File(uri.getPath());
    String fileName = file.getName();
    int dotIndex = fileName.lastIndexOf(".");
    return dotIndex != -1 ? fileName.substring(dotIndex + 1) : "";
    
  • 添加空值判断:getContentResolver().getType(uri)可能返回null,导致getExtensionFromMimeType返回null,最终生成xxxx.null格式的文件名,建议在方法中处理这种情况,避免异常。

3. Firebase初始化或引用问题

  • 确认google-services.json文件已正确放置在项目中,包名与Firebase控制台配置一致。
  • 可尝试直接使用根引用测试上传,排除路径问题:
    private final StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    

4. 网络异常

  • 404错误可能由网络波动导致请求未达服务器或响应丢失,切换Wi-Fi/移动网络重试,确保设备网络连接正常。

5. 未获取详细异常信息

  • 目前的失败监听仅提示"fails",建议打印完整异常信息定位问题:
    .addOnFailureListener(e -> {
        e.printStackTrace();
        Toast.makeText(MainActivity.this, "fails: " + e.getMessage(), Toast.LENGTH_SHORT).show();
    });
    

内容的提问来源于stack exchange,提问作者raul g h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:40:37