使用 Glide 从远程存储加载图像

Using Glide to load an image from remote storage

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

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

Glide 需要 URL 来加载图像,但在我的情况下,这些图像不是 public 并且无法通过 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);

此处提供的路径是本地路径,可在我的本地计算机上运行,​​我想将 localPath 替换为 remoteStorageFolderPath,但我不确定如何完成。任何帮助将不胜感激! 谢谢。

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

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);
    }
}