如何从服务器下载图像,然后将其作为响应写入我的 servlet。保持良好性能的最佳方法是什么?
这是我的代码:
JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
如何从服务器下载图像,然后将其作为响应写入我的 servlet。保持良好性能的最佳方法是什么?
这是我的代码:
JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
如果您不需要隐藏图像源并且服务器也可以从客户端访问,我只需将您的响应指向远程服务器(因为您已经有了 url)=> 您不需要做首先下载到您的服务器,但可能客户端可以直接访问它=>您不会浪费资源。
但是,如果您仍然需要先将其下载到您的服务器,以下帖子可能会有所帮助:Writing image to servlet response with best performance
避免在 servlet 中对图像进行中间缓冲很重要。相反,只需将收到的任何内容流式传输到 servlet 响应:
InputStream is = new URL(imgUrl).openStream();
OutputStream os = servletResponse.getOutputStream();
IOUtils.copy(is, os);
is.close();
我正在使用IOUtils
Apache Commons(不是必需的,但很有用)。
完整的解决方案:下载地图并保存到文件。
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();