1

我正在使用 jquerymobile 和 Spring MVC 开发一个应用程序。我在控制器中获取一个图像作为 Inputstream,下一步是将此图像传递给 Javascript,以便在与 JqueryMobile 的对话框中显示。

如何将此 java Inpustream 图像传递给 javascript?

PS。控制器通过 jquerymobile ajax 调用,所以我有onSuccess方法等待从控制器返回的数据来做一些事情。

4

3 回答 3

0

我假设您正在创建一个 REST 端点来接收图像。如果是这样,您可以让您的 Spring-endpoint 将 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);
    }
于 2012-10-05T12:22:10.217 回答
0

我对 Spring 没有太多经验,但我会javax.ws.rs.core.Reponse在 Java EE 中使用该类。这将允许您使用Response.ResponseBuilder包装您的InputStream.

IE

Response.ok(inputStream, MEDIA_TYPE.APPLICATION_OCTET_STREAM).build();
于 2012-10-05T13:12:53.610 回答
0

为什么不在 div 上使用 Jquery 从 java 加载该图像?

var url = 'myimage.com/image_java_url?'+dataToSend
$('#myDiv').load(url, function(response, status, xhr) {
    if (status = "success"){
        $('#myDiv').html(response);
    }
});
于 2012-10-05T11:31:42.083 回答