การใช้ Glide เพื่อโหลดภาพจากที่จัดเก็บข้อมูลระยะไกล

ฉันกำลังพัฒนาแอป Android ที่ต้องโหลดรูปภาพจำนวนมากจากโฟลเดอร์ที่อยู่บนเซิร์ฟเวอร์ออนไลน์ของฉัน (ในกรณีนี้คือ GoDaddy ที่โฮสต์แผนที่ใช้ร่วมกัน)

รูปภาพทั้งหมดถูกจัดเก็บไว้ในโฟลเดอร์รูปภาพ ภายในโฟลเดอร์ FileManager ที่ GoDaddy มอบให้

Glide จำเป็นต้องมี URL เพื่อโหลดรูปภาพ แต่ในกรณีของฉัน รูปภาพเหล่านี้ไม่ใช่แบบสาธารณะและไม่สามารถเข้าถึงได้จาก HTTP URL (และควรคงไว้เช่นนั้น)

ฉันต้องการใช้ Glide เพื่อโหลดรูปภาพที่จัดเก็บจากระยะไกลเหล่านี้ เช่นเดียวกับที่ฉันสามารถทำได้ในเครื่องโดยให้เส้นทางในเครื่องไปยังรูปภาพในเครื่องของฉัน

ตัวอย่างเช่น โค้ดนี้ทำงานในเครื่องโดยที่ path = (C:\Users\user\images\myImage.png) สังเกตว่า ไม่ใช่ https:// url

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

เส้นทางที่ให้ไว้นี้เป็นเส้นทางในเครื่องและทำงานบนเครื่องในพื้นที่ของฉัน ฉันต้องการแทนที่ localPath ด้วย remoteStorageFolderPath แต่ฉันไม่แน่ใจว่าจะทำอย่างไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ขอบคุณ


person Evyatar Saias    schedule 11.04.2018    source แหล่งที่มา


คำตอบ (1)


ดังนั้นฉันคิดว่าสิ่งนี้ได้ถูกหยิบยกขึ้นมาเป็นปัญหาใน Glides Github แล้วและเป็น แก้ไขโดย TWiStErRob เมื่อวันที่ 10 พ.ย. 2559 วิธีทำคือเพิ่มส่วนหัวการอนุญาตดังนี้:

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);
    }
}
person Anthony Cannon    schedule 11.04.2018