這應該很簡單,但經過數小時的摔跤之後,我仍然無法使其工作。據firefox稱,到目前爲止,我所有的嘗試都導致圖像「損壞或被截斷」。從服務器中檢索圖像,將其存儲在localStorage中,並將其顯示出來
從服務器檢索與一個jquery-AJAX調用圖像:
$.ajax({
async: false,
url: db[key]["DocumentLink"],
success: function (result2) {
的Base64編碼圖像,並將其存儲在localStore:
在這個例子中我使用的base64編碼jquery的插件,但我已經嘗試了幾個。
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="" />
然而,在每次嘗試,火狐顯示:
Image corrupt or truncated: data:image/jpeg;base64,77+977+977+977+9a<... much longer string>
Url:指向有效的jpeg圖像,並且base64Image.length和錯誤消息顯示var/localStorage實際上包含似乎是base64編碼數據的內容。
任何想法?
謝謝你的簡潔的答案。請注意,以這種方式,圖像仍然在服務器端轉換爲base64。我想在客戶端進行轉換,但我開始相信圖像可能會在某種程度上在AJAX調用的過程中發生改變。
p.s. - 我正在使用asp.net,但我一定能夠找到一種方法來編碼服務器端的base64圖像。我只想減少對服務器端代碼的依賴。 – TinkerTank 2011-03-19 22:40:35
@TumbleCow:你應該肯定比服務器端更少依賴於客戶端。服務器端的每個進程都比客戶端更快更安全。 ;) – 2011-03-19 22:56:56