0

如何从服务器下载图像,然后将其作为响应写入我的 servlet。保持良好性能的最佳方法是什么?

这是我的代码:

JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
4

3 回答 3

2

如果您不需要隐藏图像源并且服务器也可以从客户端访问,我只需将您的响应指向远程服务器(因为您已经有了 url)=> 您不需要做首先下载到您的服务器,但可能客户端可以直接访问它=>您不会浪费资源。

但是,如果您仍然需要先将其下载到您的服务器,以下帖子可能会有所帮助:Writing image to servlet response with best performance

于 2012-11-10T20:07:39.103 回答
1

避免在 servlet 中对图像进行中间缓冲很重要。相反,只需将收到的任何内容流式传输到 servlet 响应:

InputStream is = new URL(imgUrl).openStream();
OutputStream os = servletResponse.getOutputStream();

IOUtils.copy(is, os);
is.close();

我正在使用IOUtilsApache Commons(不是必需的,但很有用)。

于 2012-11-10T20:11:12.643 回答
0

完整的解决方案:下载地图并保存到文件。

    String imgUrl = "http://maps.googleapis.com/maps/api/staticmap?center=-15.800513,-47.91378&zoom=11&size=200x200&sensor=false";
    InputStream is = new URL(imgUrl).openStream();
    File archivo = new File("c://temp//mapa.png");
    archivo.setWritable(true);
    OutputStream output = new FileOutputStream(archivo);
    IOUtils.copy(is, output);
    IOUtils.closeQuietly(output);
    is.close();
于 2014-03-20T10:44:05.473 回答