Rufen Sie ein image vom server, speichern Sie es in "localStorage", und zeigen Sie es

Dies sollte einfach genug sein, aber nach dem Ringkampf mit ihm für Stunden, ich kann es immer noch nicht, dass es funktioniert. Bisher sind alle meine versuche haben dazu geführt, das Bild zu 'beschädigt oder abgeschnitten wird', laut firefox.

Um das Bild vom server mit der jquery-ajax-call:

 $.ajax({
                async: false,
                url: db[key]["DocumentLink"],
                success: function (result2) {

Base64-codieren Sie das Bild und speichern Sie es in localStore:

In diesem Beispiel verwende ich das jquery base64-encoding plugin, aber ich habe versucht mehrere.

                        var dbKey = "Doc " + db[key]["ID"] + " " + db[key]["Title"];
                        console.log("storing: " + db[key]["DocumentLink"] + " in " + dbKey + "\n");
                        localStorage.removeItem(dbKey);
                        var base64Image = $.base64Encode(result2);
                        console.log(base64Image.length);
                        localStorage.setItem(dbKey, base64Image);
                       console.log("is stored: " + db[key]["DocumentLink"] + " in " + dbKey + "\n");
                }
})

Display das Bild mit einem data-url:

function openImageFromDB(dbKey) {
    console.log("Trying to display image with key " + dbKey);
    var base64Img = localStorage.getItem(dbKey);
    document.getElementById("documentHolder").src='data:image/jpeg;base64,' + base64Img;
}

Die entsprechenden img:

 <img id="documentHolder" alt="Image view placeholder" src="" />

Aber auf jeden versuchen, firefox zeigt:

Image corrupt or truncated: data:image/jpeg;base64,77+977+977+977+9a<... much longer string>

Die Url: Punkte, um eine gültige jpeg-Bild, und die base64Image.die Länge und die Fehlermeldung zeigen, dass die var /localStorage tatsächlich enthalten, was zu sein scheint base64-codierten Daten.

Irgendwelche Ideen?

InformationsquelleAutor TinkerTank | 2011-03-19
Schreibe einen Kommentar