发生存储异常。该位置不存在对象。存储 FireBase

问题描述 投票:0回答:11

我想在 imageView 中显示图像,这就是我正在做的:我正在使用 FirebaseUI 显示来自 FireBase Storage 的图像。

FirebaseStorage storageDisplayImg;
StorageReference storageRef;
private FirebaseAuth auth;



        storageDisplayImg=FirebaseStorage.getInstance();
        auth = FirebaseAuth.getInstance();
        FirebaseUser userConnect = auth.getCurrentUser();
        String id_user=userConnect.getUid();
        storageRef = storageDisplayImg.getReference().child(item.getChemin_image()); // return gs://mydreambook-32321.appspot.com/images/test23-03-2017_16:46:55

        if (item.getChemin_image() != null&&id_user != null) {

           Glide.with(convertView.getContext() )
                   .using(new FirebaseImageLoader())
                   .load(storageRef)
                   .into(profilePic);
            profilePic.setVisibility(View.VISIBLE);

        } else {
            profilePic.setVisibility(View.GONE);
        }

但是我有这个错误:

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

更新,存储FireBase中的图像

android firebase firebase-storage
11个回答
7
投票

我现在遇到了同样的问题,我意识到存储中的图像以 .jpg 结尾,但我的代码要求以 .png 结尾的地址。在我解决这个问题后,它对我来说完美运行。


4
投票

您可以使用 Glide 方法以两种方式简单地显示图像。如果我们想访问下面的方法,我们必须更改Firebase存储规则。在这里我包括了我的规则。

service firebase.storage {
  match /b/project-id.appspot.com/o {
    match /{allPaths=**} {
      allow write: if request.auth != null;
      // or allow write: if true;
    }
  }
} 

方法一。 只需使用 Firebase 参考

FirebaseStorage storage = FirebaseStorage.getInstance();
                StorageReference storageRef = storage.getReferenceFromUrl("gs://your-id.appspot.com");
                StorageReference pathReference = storageRef.child("images/cross.png");

                Glide.with(context)
                        .using(new FirebaseImageLoader())
                        .load(pathReference)
                        .into(Imageview)

方法 2.Firebase URL

     Glide.with(context)
             .using(new FirebaseImageLoader())
             .load("Firebase_ImageURL")
             .into(Imageview)

3
投票

嗨,我两天前遇到了这样的问题。在 Firebase 启动之前使用 google 开发者控制台创建的项目通常会发生存储异常。 因此,当我将我的应用程序连接到 Firebase 上的现有项目时,它起作用了。要确认您的项目是否接受存储,请转到 Firebase 控制台,如果显示文件上传选项,则左键单击“存储”,否则该项目能够存储。


1
投票

好吧,当我知道我必须提供图像的完整路径时,我找到了解决方案

 storageReference.child("users").child(userID).child("screenshot")
                .child(imagePath).getFile(localFile)

我最初给出的路径不完整

 storageReference.child("users").child(userID).child("screenshot").getFile(localFile)
              

0
投票

我也有类似的问题。我试图删除一个大小写字母错误的文件

示例:通过搜索

file_of_user_uidabcde.png
 删除 
file_of_user_uIdAbCdE.png


0
投票

您可以尝试在图片上传和图片恢复之间等待一段时间。这在我的问题中起到了这样的作用。祝你好运。


0
投票

就我而言,我将完整的 URL 保存在 Firebase 数据库中,并像这样获取它:

gs: //your-id.appspot.com/images/cross.png

当我这样做时:

StorageReference ref = FirebaseStorage().Ref().Child(urlImag);
      url = (await ref.getDownloadURL()).toString();

我正在做以下事情:

StorageReference ref = FirebaseStorage (gs://your-id.appspot.com/images/cross.png).ref().child ();
      url = (await ref.getDownloadURL()).toString();

如果您已在字段中保存了完整的 URL,则无需执行此步骤。


0
投票

我使用了不同的 Firebase 项目,然后创建了新的项目。当我添加 google-services.json 并尝试在存储中添加照片时,出现了此错误。当我调试我的项目时,我发现我的存储引用显示旧网址(gs://oldproject.appspot.com)。我在Android项目中搜索了appspot.com并看到了values.xml文件。使用新的 Firebase 项目 ID 更改 value.xml 文件内容,然后存储即可工作。


0
投票

如果出现 404 错误,请检查存储规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, create: if request.auth != null;
    }
  }
}

0
投票

我只是检查 Firebase 存储中保存的类型。

所以它自动将我的图像类型从 images/jpeg 更改为 webp。

这个解决方案对我有用:

// Create file metadata including the content type
    StorageMetadata metadata = new StorageMetadata.Builder()
            .setContentType("image/jpeg")
            .build();


// Upload the file and metadata
    uploadTask = storageRef.child("images/mountains.jpg").putFile(file, 
    metadata);

检查这个https://firebase.google.com/docs/storage/android/upload-files#add_file_metadata


0
投票

我也有同样的错误。这是因为我没有在控制台中设置 firebase 存储。在控制台中设置存储后,它工作正常

© www.soinside.com 2019 - 2024. All rights reserved.