サーバーから画像をダウンロードして、サーブレットに応答として書き込む方法。良好なパフォーマンスを維持するための最良の方法は何ですか?
これが私のコードです:
JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
サーバーから画像をダウンロードして、サーブレットに応答として書き込む方法。良好なパフォーマンスを維持するための最良の方法は何ですか?
これが私のコードです:
JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
画像ソースを非表示にする必要がなく、クライアントからサーバーにアクセスできる場合は、リモートサーバーに応答を指定するだけです(すでにURLを持っているため)=>実行する必要はありません最初にサーバーにダウンロードしますが、クライアントが直接アクセスできる可能性があります=>リソースを無駄にしないでください。
ただし、それでも最初にサーバーにダウンロードする必要がある場合は、次の投稿が役立つ場合があります。最高のパフォーマンスでサーブレット応答にイメージを書き込む
サーブレットでの画像の中間バッファリングを回避することが重要です。代わりに、受信したものをサーブレットの応答にストリーミングするだけです。
InputStream is = new URL(imgUrl).openStream();
OutputStream os = servletResponse.getOutputStream();
IOUtils.copy(is, os);
is.close();
私はApacheCommonsIOUtils
から使用しています(必須ではありませんが、便利です)。
完全な解決策:地図をダウンロードしてファイルに保存します。
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();