Android Firebase异常:对象不存在

Android Firebase异常:对象不存在,android,firebase,google-cloud-storage,firebase-storage,Android,Firebase,Google Cloud Storage,Firebase Storage,我正在将一个图像上传到Firebase存储,这个错误不断出现 E/StorageException:发生了StorageException。 对象在位置处不存在。 代码:-13010 HttpResult:404 E/StorageException:{“错误”:{“代码”:404,“消息”:“未找到。无法获取对象”, “状态”:“获取对象”} java.io.IOException:{“错误”:{“代码”:404,“消息”:“未找到。无法获取对象”,“状态”:“获取对象”} 这是我的代码: S

我正在将一个图像上传到Firebase存储,这个错误不断出现

E/StorageException:发生了StorageException。 对象在位置处不存在。 代码:-13010 HttpResult:404 E/StorageException:{“错误”:{“代码”:404,“消息”:“未找到。无法获取对象”,
“状态”:“获取对象”} java.io.IOException:{“错误”:{“代码”:404,“消息”:“未找到。无法获取对象”,“状态”:“获取对象”}

这是我的代码:

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);
                }
            });
        }

StorageReference postimage_path=firebaseStorage.child(“Post-Image”).child(random+”.jpg”);
postimage_path.putFile(newposturi);
postimage_path.getDownloadUrl().addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful())
{
Uri download_url=task.getResult();
Map postmap=新HashMap();
postmap.put(“下载url”,downloadurl.toString());
邮戳放置(“说明”,邮政);
postmap.put(“用户id”,currentuser);
postmap.put(“timestamp”,“”+FieldValue.serverTimestamp());
postfirestore.collection(“Posts”).add(postmap.addOnCompleteListener(新的OnCompleteListener)(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(PostActivity.this,“Post Successful”,Toast.LENGTH_SHORT.show();
意向意向=新意向(PostActivity.this,MainActivity.class);
星触觉(意向);
完成();
}
否则{
字符串错误=task.getException().getMessage();
Toast.makeText(PostActivity.this,“发布时出错:+错误,Toast.LENGTH_SHORT.show();}
newpostprogress.setVisibility(View.INVISIBLE);
}
});
}

错误消息告诉您,存储器中没有对象的路径如下所示:

StorageReference postimage_path=firebaseStorage.child("Post Image").child(random+".jpg");
缺少的对象导致
getDownloadUrl()
失败


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

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

另一件重要的事情是

在棉花糖中添加了运行时权限。
启用android设备上的存储权限。android棉花糖+您必须允许应用程序的权限。

rules_version='2';service firebase.storage{match/b/{bucket}/o{match/{AllPath=**}{allow write:if request.auth!=null;allow read:if true;}这是我给它的规则,它仍然不调试图像正在该存储路径上发布如果它正在发布并且在Firebase存储中可用为什么不能下载URL()在同一路径获取该对象如果您的代码没有等待上载完成,则下载URL将在上载完成之前不可用。好的,我得到了它,但如何修复它……。另一件奇怪的事情是,我在另一个活动中使用了相同的代码,并且该代码正在工作,图像正在发布,并且下载URL也在生成(如果是)你想知道我也会给你看那段代码,但我做了完全相同的事情,它成功了