2012-10-05 58 views
0

我正在用jquerymobile和Spring MVC開發一個應用程序。我在控制器中以Inputstream的形式獲取圖像,下一步是將此圖像傳遞給Javascript,以便與JqueryMobile進行對話顯示。如何將Java InputStream傳遞給Javascript

如何將此java Inpustream圖像傳遞給javascript?

PS。控制器通過jquerymobile ajax調用,所以我有onSuccess方法等待從控制器返回的數據。

+0

我看來,像你需要提取原始字節......那麼,來看看[這裏](http://stackoverflow.com/questions/4564119/javascript-convert -byte-to-image),它可能會有所幫助 – Less

+1

爲什麼你需要使用ajax傳遞圖像?爲什麼不使用常規請求 - >用所有動態參數創建圖像網址。例如test.com/getImage/id13.png(getImage.png?id = 13) – zvez

+0

**少**,謝謝我會看一看。 ** Zvezdochet **,我彈出這個檢索圖像在jquerydialog這是我使用AJAX調用 – Hugo

回答

0

爲什麼不使用jquery在div上加載java的圖像?

var url = 'myimage.com/image_java_url?'+dataToSend 
$('#myDiv').load(url, function(response, status, xhr) { 
    if (status = "success"){ 
     $('#myDiv').html(response); 
    } 
}); 
+0

這將是一個選項,如果我在URL中獲取圖像,但我有它在輸入流 – Hugo

0

我假設你正在創建一個REST端點來接收圖像。如果是這樣,你可以讓你的Spring端點將HttpServletResponse作爲參數,並將圖像流傳輸到servlet輸出流。 將輸入流包裝在BufferedInputStream中,讓它爲您處理緩衝。

要得到的HttpServletResponse的保持就把它添加作爲參數傳遞給你的方法,

@RequestMapping(value = "/something") 
public void helloWorld(HttpServletResponse response) { 
    InputStream imageStream = .....; 

    OutputStream oSteam = response.getOutputStream(); 
    InputStream stream = new BufferedInputStream(imageStream); 
    int b = -1; 
    while((b = stream.read())> -1){ 
     oSteam.write(b); 
    } 
+0

嗨**托馬斯**,這只是我現在正在做的事情,但沒有成功的結果。謝謝 :) – Hugo

0

我還沒有與春太多的經驗,但我會用javax.ws.rs.core.Reponse類的Java EE。這將允許您使用Response.ResponseBuilder構建一個http響應,包裝您的InputStream

Response.ok(inputStream, MEDIA_TYPE.APPLICATION_OCTET_STREAM).build();