2011-06-22 110 views
1

我正在上傳圖像文件從數據庫到jsp。我選擇使用SQL的圖像,如下如何將servlet響應中的圖像發送給ajax?

select (logo_img_one) from accounts_logo where logo_usrm_id=1 

我使用binarystream作爲

InputStream readImg = rs1.getBinaryStream(1); 

讀取圖像和製作的內容類型爲 「圖像/ JPEG」 作爲

response.setContentType("image/jpg"); 

現在我想知道如何使用getoutputstream的響應將圖像發送到ajax以及如何進入ajax。我怎樣才能做到這一點?

回答

0

您可以使用輸出流設置的contentType

Printwritter out =response.getWritter(); 
    out.println(imageObject); 
    out.flush 
+0

圖像是二進制數據,而不是字符數據。處理二進制數據如字符數據只會破壞二進制數據。 – BalusC

+0

將您的內容類型設置爲response.setContentType(「image/gif」); – mahesh

+0

Mr.BalusC不再批評其他人,只是專注於你的業務。因爲在我的回答中,我沒有提到它的角色對象。 – mahesh

1

這是行不通的依次如下。 JavaScript無法在本地或其他地方保存檢索到的字節,並告訴瀏覽器顯示它。最好的做法是將URL作爲字符串傳回給圖像,並讓JavaScript將其設置爲HTML <img>元素的src屬性。

E.g.在servlet的

response.setContentType("text/plain"); 
response.getWriter().write(imageUrl); // e.g. "images/some.png" 

和JS

var imageUrl = xhr.responseText; 
var img = document.createElement("img"); 
img.src = imageUrl; 
document.getElementById("someDivId").appendChild(img); 

這樣一個

<div id="someDivId"></div> 

將動態最終在像

<div id="someDivId><img src="images/some.png" /></div> 

您可以創建一個圖像的servlet這從中流出圖像DB映射到響應的輸出流並映射到/images/*上的servlet。你可以找到一個例子here

0

它可能工作...的想法是將圖像的src屬性設置爲一樣的東西:

src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYlJREFUeNrMVD1rwlAUPfkwBBxFKQQlDhmjqzj4F9w7FfwThZaW9n8UnDrrn1BEXNTBRQQhEE1ERRR0Sd990A7VaKJJ6YHzEu4N99z3zrsRGo2GAuCF8YFRQzSwGOuM7zJb3hgfES2o0SdGSWRLDfGhRgLpGAXS4q0VCoUCBEHwzd8skM/nUSqVoCjKybz8O1CtVn2LeZ4H27YxnU6xXC6x3+95PJPJoFKpoN1uY7vdnhfww3w+x3A4xGaz4d3quo5sNvuTTyaTXKTb7cJ13csCzWbzKKaqKj/zXC4HSZKO8iRcLpcxGAwwmUzC7UDTNBSLRSQSiVAeyUGNpM4v4XA4oNfr8eMMLJBKpWCaJn9fLBawLAur1Qq73Y6b/H0pyNyrTDYMA7PZDKPRCOv1+uQ3ZCqZe9UcOI6DTqfjW5zMbLVa3Bu6RaE9GI/HZ/P9fp8/qfipYROj+ukEnuQgEx0GImKGHGSC//UO/kTAibG+QwIfMQrUyeRXusaM94x3ERW2GT8Zn78EGACRmoKUJhB1TQAAAABJRU5ErkJggg==" 

以base64字符串可以通過AJAX調用你的servlet進行查詢和檢索編碼輸入流來自DB。