2012-03-22 32 views
0

我有一個圖像byte[],這byte[]來自LDAP [Oracle Open LDAP身份驗證提供程序],我需要顯示此圖像到頁面中。網頁:從字節數組顯示圖像

我怎樣才能做到這一點?

我可以使用javax.faces.context.ResponseWriterbyte[]或者我應該從javax.faces.context.FacesContext提取java.io.OutputStream一個實例,寫byte[]到頁面。

如果這些方法中的任何一個是可能的,那麼我可以或許可以創建自定義的JSF標籤,以顯示圖像,並嘗試在javax.faces.render.Renderer,其中byte[]將是encodeBegin(FacesContext context, UIComponent component)方法執行映像創建作爲屬性發送。

我可以爲此使用Servlet嗎?其實我不知道我是否可以從af:imagesource屬性中調用一個Servlet。

如果我得到您的建議,這對我非常有幫助。

謝謝。

回答

1

我有一個圖像byte [],這個byte []來自LDAP [Oracle Open LDAP Authentication Provider],我需要將這個圖像顯示到頁面中。

您需要在HTTP級別考慮這一點。 不包含圖像(至少除非你直接嵌入數據,這對於非微小圖像幾乎總是一個壞主意)。它包含一個URL的圖像。

您應該生成一個img標記,並帶有相應的href,這將允許您在瀏覽器發出請求時獲取數據。這應該幾乎可以肯定是一個單獨的servlet,爲了簡單起見 - 理想情況下對包含「合理」文件名(對圖像有合理擴展名)的請求作出響應。

此時,您獲取圖像的數據,並將其寫入Writer而不是OutputStream作爲響應,因爲它是二進制數據。

+0

謝謝。我的理解是創建一個自定義標籤 - >使用writer來啓動img tag->將url添加到href屬性到servlet->關閉標籤,並在該servlet的doGet中使用outputstream編寫圖像。我對嗎? – 2012-03-22 17:27:14

+0

@TapasBose:是的,沒錯。 href應該只有足夠的信息來獲取數據,例如在URL中添加一個ID。您不需要將圖像本身作爲創建頁面的一部分來獲取。 – 2012-03-22 17:34:56

+0

謝謝。我會盡力實施它,並會讓你知道。 – 2012-03-22 17:43:08