2012-07-25 83 views
0

我有一個SQL Server表,它包含兩列 - 一個整數ID和一個varbinary(max)ImageData,它是一個JPEG圖像。在Javascript中,我有一個Ajax調用來獲取特定ID的ImageData並將其作爲字節數組返回。如何生成一個將顯示圖像的XHTML IMG標籤? (a)這需要能夠在IE 8上運行,IE 8似乎並不支持該方法,並且(b)Firefox似乎期待着實際的Blob類型而不是字節數組(並且Blob()構造函數似乎不存在)。在JavaScript中用一個字節數組生成一個<IMG>標記?

我的確有一個選擇 - 將數據作爲Base64字符串返回,然後使用該標記,但在IE8中不起作用,並且其他瀏覽器可能存在大小限制(某些圖像爲600K,意味着標籤可能有超過100萬個字符)。

回答

1

您正在過度設計一個已經存在更簡單解決方案的問題。

使用AJAX插入以下HTML並讓瀏覽器通過HTTP獲取圖像本身。通過AJAX發送圖像數據將需要一個毫無意義的base64編碼/解碼,並最終佔用更多帶寬並擊敗瀏覽器緩存。

<img src="imageServer.php?imageID=3224" /> 

然後imageServer.php(你建立這樣或抓住它的地方)會搶了適當的圖像記錄,吐出的圖像MIME類型,然後流二進制數據。

+0

我可以在ASP.NET中返回一個流 - 但我怎麼得到(在這種情況下)imageServer.php指示IMG標籤,它發送圖像/ JPEG類型? – 2012-07-25 20:00:49

+0

IN。 NET,這種方式:http://stackoverflow.com/questions/6252086/how-to-stream-byte-array-image – 2012-07-25 20:05:00

+0

它在Firefox 14,但不是在IE 8中工作。 – 2012-07-25 20:49:45

相關問題