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 |