【问题标题】:Using Glide to load an image from remote storage使用 Glide 从远程存储加载图像
【发布时间】:2018-04-11 16:04:02
【问题描述】:

我正在开发一个 android 应用程序,该应用程序需要从位于我的在线服务器(在本例中为 GoDaddy 托管共享计划)上的文件夹中加载许多图像。

所有图像都存储在图像文件夹中GoDaddy 提供的 FileManager 文件夹内。

Glide 需要一个 URL 来加载图像,但在我的情况下,这些图像不是公开的,无法从 HTTP URL 访问(应该保持这种方式)。

我想使用 glide 来加载这些远程存储的图像,就像我可以通过提供本地计算机上图像的本地路径来在本地这样做一样

例如,此代码在本地工作,其中 path = (C:\Users\user\images\myImage.png) 注意它是 not https:// url 。

Glide.with(mContext) .load(C:\Users\user\images\myImage.png) .into(mImageView);

这里提供的路径是本地的,可以在我的本地机器上运行,我想用 remoteStorageFolderPath 替换 localPath,但我不确定它是如何完成的。任何帮助将不胜感激! 谢谢。

【问题讨论】:

    标签: android picasso shared-hosting android-glide godaddy-api


    【解决方案1】:

    所以我认为这已经被提出为issue in Glides Github,并由 TWiStErRob 于 2016 年 11 月 10 日解决。方法是添加授权标头,如下所示:

    LazyHeaders auth = new LazyHeaders.Builder() // This can be cached in a field and reused later.
        .addHeader("Authorization", new BasicAuthorization(username, password))
        .build();
    
    Glide
        .with(context)
        .load(new GlideUrl(url, auth)) // GlideUrl is created anyway so there's no extra objects allocated.
        .into(imageView);
    }
    
    public class BasicAuthorization implements LazyHeaderFactory {
        private final String username;
        private final String password;
    
        public BasicAuthorization(String username, String password) {
            this.username = username;
            this.password = password;
        }
    
        @Override
        public String buildHeader() {
            return "Basic " + Base64.encodeToString((username + ":" + password).getBytes(), Base64.NO_WRAP);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 2018-09-03
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多