SFTP 파일업로드/다운로드
SFTP 서버에 연결하여 파일다운로드/업로드하는 소스입니다.
SFTP는 기존의 FTP 에서 보안(secure)을 강화한것으로 기본포트가 FTP는 21번이지만 SFTP는 22번입니다.
아래 사이트에서 jar를 받아서 사용하시면 됩니다.
1) SFTP 서버 접속
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; import cres.com.context.ApplicationContextProvider; public class FTPUtil{ private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private Session session = null; private Channel channel = null; private ChannelSftp channelSftp = null; // SFTP 서버연결 public void init(){ String url = "..."; String user = "..."; String password = "..."; System.out.println(url); //JSch 객체 생성 JSch jsch = new JSch(); try { //세션객체 생성 ( user , host, port ) session = jsch.getSession(user, url); //password 설정 session.setPassword(password); //세션관련 설정정보 설정 java.util.Properties config = new java.util.Properties(); //호스트 정보 검사하지 않는다. config.put("StrictHostKeyChecking", "no"); session.setConfig(config); //접속 session.connect(); //sftp 채널 접속 channel = session.openChannel("sftp"); channel.connect(); } catch (JSchException e) { e.printStackTrace(); } channelSftp = (ChannelSftp) channel; } // 단일 파일 업로드 public void upload( String dir , File file){ FileInputStream in = null; try{ //파일을 가져와서 inputStream에 넣고 저장경로를 찾아 put in = new FileInputStream(file); channelSftp.cd(dir); channelSftp.put(in,file.getName()); }catch(SftpException se){ se.printStackTrace(); }catch(FileNotFoundException fe){ fe.printStackTrace(); }finally{ try{ in.close(); } catch(IOException ioe){ ioe.printStackTrace(); } } } // 단일 파일 다운로드 public InputStream download(String dir, String fileNm){ InputStream in = null; String path = "..."; try{ //경로탐색후 inputStream에 데이터를 넣음 channelSftp.cd(path+dir); in = channelSftp.get(fileNm); }catch(SftpException se){ se.printStackTrace(); } return in; } // 파일서버와 세션 종료 public void disconnect(){ channelSftp.quit(); session.disconnect(); }
'개발 > Java' 카테고리의 다른 글
[JAVA/자바] 파일삭제 File delete() 사용법 (0) | 2017.04.13 |
---|---|
[JAVA/자바] Jad Decompiler 설치 및 사용 (0) | 2017.04.11 |
[JAVA/자바] 파일압축하기 ( jazzlib, apache.commons.compress ) (5) | 2017.04.06 |
[JAVA] 메인메소드 public static void main(String[] args) 를 이해하자 (18) | 2017.02.17 |
[JAVA] 이클립스 프로젝트 생성 및 실행 방법 (0) | 2015.02.24 |