【发布时间】:2011-07-18 20:23:09
【问题描述】:
这应该很简单,但是在与它搏斗了几个小时后,我仍然无法让它工作。根据 firefox 的说法,到目前为止,我所有的尝试都导致图像“损坏或被截断”。
使用 jquery-ajax 调用从服务器检索图像:
$.ajax({
async: false,
url: db[key]["DocumentLink"],
success: function (result2) {
Base64对图像进行编码,并将其存储在localStore中:
在这个例子中,我使用了 jquery base64-encoding 插件,但我已经尝试了几个。
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");
}
})
显示带有数据 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;
}
对应的img:
<img id="documentHolder" alt="Image view placeholder" src="" />
但是,每次尝试时,Firefox 都会显示:
Image corrupt or truncated: data:image/jpeg;base64,77+977+977+977+9a<... much longer string>
Url: 指向一个有效的 jpeg 图像,base64Image.length 和错误消息显示 var / localStorage 实际上包含似乎是 base64 编码的数据。
有什么想法吗?
【问题讨论】:
标签: javascript ajax image html base64