Android Glide:无法加载 Firebase 存储的资源

Posted

技术标签:

【中文标题】Android Glide:无法加载 Firebase 存储的资源【英文标题】:Android Glide: Failed to load resource of Firebase Storage 【发布时间】:2021-05-30 02:34:31 【问题描述】:

我正在尝试在存储在 Firebase 存储中的 CircularImageView 中显示图像,但 glide 给了我这个错误:

W/Glide: Load failed for gs://project-2d8i4.appspot.com/pictures/3HnfQSeBladDsD9sPEcKrhxJ6CB2 with size [1200x1200]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource

图片在 Firestore 中保存为:

"gs://project-2d8i4.appspot.com/pictures/3HnfQSeBladDsD9sPEcKrhxJ6CB2"

绑定到图像视图(uri = "gs://project-2d8i4.appspot.com/pictures/3HnfQSeBladDsD9sPEcKrhxJ6CB2"):

fun CircularImageView.bindProfilePicture(uri: String?) 
    Glide
        .with(this)
        .load(uri)
        .into(this)

glide 的依赖项:

implementation 'com.github.bumptech.glide:glide:4.12.0'

任何帖子中没有任何答案对我有任何帮助。我希望有人能帮助我。谢谢。

【问题讨论】:

【参考方案1】:

以下网址:

gs://project-2d8i4.appspot.com/pictures/3HnfQSeBladDsD9sPEcKrhxJ6CB

确实是存储在云存储中的文件。不幸的是,这个 URL 不能被 Glide 识别,因为它不是一个有效的 URL。要解决此问题,您需要获取“下载 URL”而不是以 gs://... 开头的 URL。

要获取实际下载地址,请查看官方文档:

How to create a reference to a file

我的回答来自以下帖子:

How to get the download url from Firebase Storage?

【讨论】:

嗨,谢谢。每当我将相同ID的图片上传到存储时,downloadUrl一直在变化,这很棒。它可以帮助我提供实时解决方案。【参考方案2】:

为了避免 cmets 中提到的缓存,您可以将这两个与 glide 调用一起使用。

diskCacheStrategy(DiskCacheStrategy.NONE) 
.skipMemoryCache(true)

选中 here 以使用滑行从 firebase url 下载。

【讨论】:

我需要将该文件下载到本地存储吗?因为我收到了同样的错误,另外还有java.io.IOException(File unsuitable for memory mapping)。如果查看 Firebase 文档,在使用 FirebaseUI 时,我只需将引用传递给该文件 - 这就是我所做的。 我的错,如果你可以在这里查看:medium.com/@egemenhamutcu/… 太棒了。它确实会加载,但是当我使用相同的 ID 用不同的图片更新我的存储,然后 GlideApp 获取该 ID 下的图片时,它总是返回我上传的第一张图片。这怎么可能?这是缓存在我的手机上还是什么? 将这两种方法与您上面的滑行代码一起使用。 .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) 使用这两个是个好主意吗?实际上,通过使用亚历克斯的回答,我可以使用捕获,并且即使使用相同的 ID,只要我更改存储的图片,downloadUrl 也会一直更改。感谢您的帮助。

以上是关于Android Glide:无法加载 Firebase 存储的资源的主要内容,如果未能解决你的问题,请参考以下文章

glide4.0以上在Android9.0以上加载图片不显示解决方案

android图片加载库Glide

Android实战——Glide的使用,加载图片只要一句话

Android关于Glide的使用(高斯模糊加载监听圆角图片)

Android关于Glide的使用(高斯模糊加载监听圆角图片)

Android中的Glide加载图片