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 |