Как мне сохранить изображение на диск в Java? - PullRequest
2 голосов
/ 30 июля 2010

Я использую httpclient для загрузки изображений с веб-страницы и пытаюсь сохранить их на диск, но без особой удачи. Я использую приведенный ниже код для извлечения изображения, но не уверен, что нужно сделать дальше, чтобы фактически получить его на диск, выборка будет в формате JPG или PNG ... спасибо

HttpContext localContext = new BasicHttpContext();
        localContext.setAttribute(ClientContext.COOKIE_STORE,HttpClientFetch.emptyCookieStore);

        HttpGet httpget = new HttpGet(pPage.imageSrc);
        HttpResponse response;
        response = httpClient.execute(httpget, localContext);

        Header[] headers = response.getAllHeaders();
        for(Header h: headers) {
          logger.info("HEADERS: "+h.getName()+ " value: "+h.getValue());
        }

        HttpEntity entity = response.getEntity();


        Header contentType = response.getFirstHeader("Content-Type");

        byte[] tmpFileData;

        if (entity != null) { 
          InputStream instream = entity.getContent();
          int l;
          tmpFileData = new byte[2048];
          while ((l = instream.read(tmpFileData)) != -1) {
          }
        }

tmpFileData теперь должен содержать байты jpg с сайта.

Ответы [ 3 ]

3 голосов
/ 30 июля 2010
if (entity != null) { 
    InputStream instream = entity.getContent();
    OutputStream outstream = new FileOutputStream("YourFile");
    org.apache.commons.io.IOUtils.copy(instream, outstream);
}
1 голос
/ 30 июля 2010

Лучше использовать Apache commons-io, тогда вы можете просто скопировать один InputStream в один OutputStream (FileOutputStream в вашем случае).

1 голос
/ 30 июля 2010

Взгляните на FileOutputStream и его write метод.

FileOutputStream out = new FileOutputStream("outputfilename");
out.write(tmpFileData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...