You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glide无法加载无扩展名的placeholder.com站点图片该如何解决?

问题根因

你遇到的报错本质是服务端策略限制,和Glide本身的图片识别能力无关:

  1. via.placeholder.com站点近期调整了资源访问规则,无格式后缀的路径已经被下线,所以会返回410 Gone状态码,触发FileNotFoundException
  2. Glide识别图片格式依赖的是响应头的Content-Type字段,不是URL的后缀,只要服务端能正常返回资源,无后缀的URL本身是可以正常加载的。
适配解决方案
  • 方案1:URL预处理补全后缀
    针对该站点的URL做统一适配,加载前自动拼接合法的格式后缀,代码示例如下:
    // 扩展函数处理URL
    fun String.fixPlaceholderImageUrl(): String {
        if (!startsWith("https://via.placeholder.com/")) return this
        val hasSuffix = endsWith(".jpg") || endsWith(".png") || endsWith(".webp")
        return if (hasSuffix) this else "$this.jpg"
    }
    
    加载时调用处理后的URL即可:
    @BindingAdapter("imageFromUrl")
    @JvmStatic
    fun loadImageFromUrl(imageView: ImageView, url: String?) {
        url?.let { 
            val fixedUrl = it.fixPlaceholderImageUrl()
            loadImage(imageView, Glide.with(imageView.context).load(fixedUrl)) 
        }
    }
    
  • 方案2:全局拦截请求适配
    如果需要全应用统一处理无需逐个修改加载逻辑,可以自定义Glide的ModelLoader,拦截发往该站点的所有请求,自动补全后缀后再发起请求。
  • 方案3:调整缓存策略(可选)
    可将原有的DiskCacheStrategy.AUTOMATIC改为DiskCacheStrategy.DATA,直接缓存服务端返回的原始资源数据,避免因URL后缀变化导致缓存失效。

内容的提问来源于stack exchange,提问作者user924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:54:04