서버에서 이미지를 다운로드 한 다음 내 서블릿에 응답으로 쓰는 방법. 양호한 성능을 유지하는 가장 좋은 방법은 무엇입니까? 여기 java - 서블릿 응답으로 이미지를 다운로드하여 작성하십시오.
내 코드입니다 :JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
서버에서 이미지를 다운로드 한 다음 내 서블릿에 응답으로 쓰는 방법. 양호한 성능을 유지하는 가장 좋은 방법은 무엇입니까? 여기 java - 서블릿 응답으로 이미지를 다운로드하여 작성하십시오.
내 코드입니다 :JSONObject imageJson;
... //getting my JSON
String imgUrl = imageJson.get("img");
. 대신 서블릿 응답받은대로 스트리밍 : 제가 아파치 공용 IOUtils
(필요하지만, 도움이되지 않음)를 사용하고
InputStream is = new URL(imgUrl).openStream();
OutputStream os = servletResponse.getOutputStream();
IOUtils.copy(is, os);
is.close();
.
당신이 (당신의 이미지 소스를 숨길 서버뿐만 아니라 클라이언트에서 액세스 할 수있는 경우, 그냥 원격 서버에 응답을 가리켜 줄 필요가없는 경우 등 이미 URL이 있음) => 먼저 서버에 다운로드 할 필요는 없지만 클라이언트는 직접 리소스에 액세스 할 수 있습니다.> 리소스를 낭비하지 마십시오. 당신은 여전히 첫 번째 서버에 다운로드해야하는 경우
그러나, 다음 포스트는 도움이 될 수 있습니다 : 그것은 서블릿에서 이미지의 중간 버퍼링을하지 않도록하는 것이 중요합니다 Writing image to servlet response with best performance
전체 솔루션 :지도를 다운로드하고 파일에 저장.
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();