我想在 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中的图像
我现在遇到了同样的问题,我意识到存储中的图像以 .jpg 结尾,但我的代码要求以 .png 结尾的地址。在我解决这个问题后,它对我来说完美运行。
您可以使用 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)
嗨,我两天前遇到了这样的问题。在 Firebase 启动之前使用 google 开发者控制台创建的项目通常会发生存储异常。 因此,当我将我的应用程序连接到 Firebase 上的现有项目时,它起作用了。要确认您的项目是否接受存储,请转到 Firebase 控制台,如果显示文件上传选项,则左键单击“存储”,否则该项目能够存储。
我也有类似的问题。我试图删除一个大小写字母错误的文件
示例:通过搜索
file_of_user_uidabcde.png
删除
file_of_user_uIdAbCdE.png
您可以尝试在图片上传和图片恢复之间等待一段时间。这在我的问题中起到了这样的作用。祝你好运。
就我而言,我将完整的 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,则无需执行此步骤。
我使用了不同的 Firebase 项目,然后创建了新的项目。当我添加 google-services.json 并尝试在存储中添加照片时,出现了此错误。当我调试我的项目时,我发现我的存储引用显示旧网址(gs://oldproject.appspot.com)。我在Android项目中搜索了appspot.com并看到了values.xml文件。使用新的 Firebase 项目 ID 更改 value.xml 文件内容,然后存储即可工作。
如果出现 404 错误,请检查存储规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, create: if request.auth != null;
}
}
}
我只是检查 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
我也有同样的错误。这是因为我没有在控制台中设置 firebase 存储。在控制台中设置存储后,它工作正常