This should be simple enough, but after wrestling with it for hours, I still can't get it to work. So far, all my attempts have resulted in the image becoming 'corrupted or truncated', according to firefox.
Retrieve the image from the server with a jquery-ajax call:
$.ajax({
async: false,
url: db[key]["DocumentLink"],
success: function (result2) {
Base64 encode the image, and store it in localStore:
In this example I'm using the jquery base64-encoding plugin, but I've tried several.
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 the image with a 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;
}
The corresponding img:
<img id="documentHolder" alt="Image view placeholder" src="" />
However, on every try, firefox displays:
Image corrupt or truncated: data:image/jpeg;base64,77+977+977+977+9a<... much longer string>
The Url: points to a valid jpeg image, and the base64Image.length and the error message show that the var / localStorage actually contain what seems to be base64 encoded data.
Any ideas?
p.s. - I am using asp.net, but I should definitely be able to find out a way to encode base64 images server-side. I would just like to be less dependent on server-side code. – TinkerTank Mar 19 '11 at 22:40