2016년 12월 25일 일요일

[java]웹 이미지 로드

웹이미지를 로컬에 저장하는 방법은 크게 네가지가 있을수 있다.

1. javaIO, NIO 로 읽어서 저장하기
2. ftp(file transfer protocol) 로 다운받기
3. 캡쳐 이미지 생성후 javaIO,NIO 로 읽어서 저장하기
4. 해킹

사실상 불특정 url 일경우 파일권한 또는 폴더 권한때문에 1번은  안될 확률이 많고
2번또한 ftp 계정을 알아야 가능 하다. 계정을 알아도 해당 계정에 대한 퍼미션이 문제가 될수 도 있다.

4 번은 잘모르겟어서

3 번으로 도전

loadWebImage() 함수를 호출 해서 이미지를 버퍼에 담고 saveByteBufferImage() 전달하여
저장한다.

         /**
* 웹에서 이미지 받아서 바이트 버퍼에 담은후 saveByteBufferImage 함수를호출 이          * 미지 저장후 경로 리턴 받기
* 작성자 : 어셈블링블링
* @param imageUrl
* @param fileName
* @param sftpClient
* @return
*/
protected String loadWebImage(String imageUrl, String fileName,String type,                                         FileUploadSFTPClient sftpClient) {

String serverImagePath = null;
   
            //자바 http 파싱 라이브러리 jsoup 를 이용 이미지를 바이트에 배열에 담는다.
           
   try {
       byte[] bytes = Jsoup.connect(imageUrl)
        .ignoreContentType(true)
        .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64;                                                     x64; rv:25.0) Gecko/20100101 Firefox/25.0")
        .referrer("http://www.google.com")
        .timeout(12000)
        .followRedirects(true)
        .execute().bodyAsBytes();
               
                //바이트 버퍼로 옮기기
       ByteBuffer buffer = ByteBuffer.wrap(bytes);
     
     
     
        //이미지 파일저장 하고 경로 리턴 받기
       serverImagePath = saveByteBufferImage(buffer, TEMP_LOCAL_IMAGE_PATH,                 fileName , type, sftpClient);

   } catch (IOException e) {
       e.printStackTrace();
   }
   return serverImagePath;
}


이제 바이트 버퍼에 담겨있는 데이터를 자신이 원하는 경로에 저장하면된다.

saveByteBufferImage() 함수는 보안상 공개 하지 않겟다. 퍼갈때 댓들 들좀 달아주삼.

댓글 없음:

댓글 쓰기

[lunux]리눅스 폴더별 용량 확인

리눅스 폴더별 용량 확인 조회 하고자 하는 디렉토리 리스트가있는 경로로 이동후 du -h --max-depth=1