Firebase 异常:对象不存在

Posted

技术标签:

【中文标题】Firebase 异常:对象不存在【英文标题】:Firebase exception:Object Does Not Exist 【发布时间】:2020-02-12 10:57:05 【问题描述】:

我正在将图像上传到 Firebase 存储,但此错误不断出现

E/StorageException:发生了 StorageException。 对象在该位置不存在。 代码:-13010 HttpResult:404 E/StorageException:“错误”:“代码”:404,“消息”:“未找到。无法获取对象”, “状态”:“GET_OBJECT” java.io.IOException: "error": "code": 404, "message": "Not Found. could not get object", "status": "GET_OBJECT"

这是我的代码:

StorageReference postimage_path=firebaseStorage.child("Post Image").child(random+".jpg");

postimage_path.putFile(newposturi);
postimage_path.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() 
    @Override
    public void onComplete(@NonNull Task<Uri> task) 
        if(task.isSuccessful())
        

            Uri download_url=task.getResult();
            Map<String,String> postmap=new HashMap<>();
            postmap.put("download url",download_url.toString());
            postmap.put("Description",post);
            postmap.put("user_id",currentuser);
            postmap.put("timestamp",""+FieldValue.serverTimestamp());
            postfirestore.collection("Posts").add(postmap).addOnCompleteListener(new OnCompleteListener<DocumentReference>() 
                @Override
                public void onComplete(@NonNull Task<DocumentReference> task) 
                    if(task.isSuccessful())
                        Toast.makeText(PostActivity.this, "Post Successful", Toast.LENGTH_SHORT).show();
                        Intent intent=new Intent(PostActivity.this,MainActivity.class);
                        startActivity(intent);
                        finish();
                    

                    else
                    String error=task.getException().getMessage();
                    Toast.makeText(PostActivity.this, "Error while Posting :"+error, Toast.LENGTH_SHORT).show();
                    newpostprogress.setVisibility(View.INVISIBLE);
                
            );
        

【问题讨论】:

【参考方案1】:

错误消息告诉您存储中没有对象,您正在构建的路径如下:

StorageReference postimage_path=firebaseStorage.child("Post Image").child(random+".jpg");

缺少的对象导致getDownloadUrl() 失败。

您必须进行一些调试以确定路径应该是什么,并确保命名对象确实存在。

【讨论】:

如果图像被发布并且在 Firebase 存储中可用,则图像将被发布到该存储路径,为什么不能然后 DownloadUrl() 在同一路径获取该对象 如果您的代码没有等待上传完成,则下载 URL 在等待上传完成之前将不可用。 好的,我明白了,但是我该如何解决它......另一个奇怪的事情是我在另一个活动中使用了相同的代码并且它正在工作,图像正在发布如果你想看,下载网址也会生成 【参考方案2】:

检查您的 Firebase 存储权限。它应该具有读/写权限。还要检查 firebase 规则。

还有一点很重要,

在棉花糖中添加了运行时权限。 在安卓设备上启用存储权限。 android marshmallow+你必须允许app的权限。

【讨论】:

rules_version = '2';服务 firebase.storage 匹配 /b/bucket/o 匹配 /allPaths=** 允许写入:如果 request.auth!=null;允许读取:如果为真; 这是我给它的规则仍然不是调试

以上是关于Firebase 异常:对象不存在的主要内容,如果未能解决你的问题,请参考以下文章

Firebase图片对象不存在?

使用 getData() 从 Firebase 存储下载 jpeg 图像时出现错误 13010“对象不存在”

Firebase E/StorageException:发生了 StorageException。对象在该位置不存在

远程处理异常:对象“xxx.rem”已断开连接或在服务器上不存在

Python3基础 delattr 删除对象的一个属性 如果属性不存在,就抛出异常

异常 ORA-00942: 表或视图不存在 - 使用休眠会话插入现有表时