Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코드이그나이터
- Stock
- java
- Oracle
- 주식 청약
- 공모주 청약 일정
- IPO
- 7월 공모주 청약 일정
- 리눅스
- Eclipse
- 자바
- 공모주
- 공모주 청약
- 제이쿼리
- html
- 맥
- css
- 주식 청약 일정
- codeigniter
- php
- jquery
- 주식
- Stock ipo
- linux
- MYSQL
- 오라클
- JavaScript
- 자바스크립트
- SQL
- 6월 공모주 청약 일정
Archives
- Today
- Total
개발자의 끄적끄적
[java] SFTP 파일 업로드, 다운로드 구현 소스 [펌] 본문
728x90
반응형
[java] SFTP 파일 업로드, 다운로드 구현 소스 [펌]
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;
/**
* SFTP 프로토콜을 접속 모듈
* 파일 업로드, 다운로드 기능 제공.
*/
public class SFTPService{
private Session session = null;
private Channel channel = null;
private ChannelSftp channelSftp = null;
/**
* 서버와 연결에 필요한 값들을 가져와 초기화 시킴
*
* @param host
* 서버 주소
* @param userName
* 접속에 사용될 아이디
* @param password
* 비밀번호
* @param port
* 포트번호
*/
public void init(String host, String userName, String password, int port) {
JSch jsch = new JSch();
try {
session = jsch.getSession(userName, host, port);
session.setPassword(password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
} catch (JSchException e) {
e.printStackTrace();
}
channelSftp = (ChannelSftp) channel;
}
/**
* 단일 파일을 업로드
*
* @param dir
* 저장시킬 주소(서버)
* @param file
* 저장할 파일 경로
*/
public boolean upload(String dir, String filePath) {
boolean result = true;
FileInputStream in = null;
try {
File file = new File(filePath);
String fileName = file.getName();
//fileName = URLEncoder.encode(fileName,"EUC-KR");
in = new FileInputStream(file);
channelSftp.cd(dir);
channelSftp.put(in, fileName);
} catch (Exception e) {
e.printStackTrace();
result = false;
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 단일 파일 다운로드
*
* @param dir
* 저장할 경로(서버)
* @param downloadFileName
* 다운로드할 파일
* @param path
* 저장될 공간
*/
public void download(String dir, String downloadFileName, String path) {
InputStream in = null;
FileOutputStream out = null;
try {
channelSftp.cd(dir);
in = channelSftp.get(downloadFileName);
} catch (SftpException e) {
e.printStackTrace();
}
try {
out = new FileOutputStream(new File(path));
int i;
while ((i = in.read()) != -1) {
out.write(i);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 서버와의 연결을 끊는다.
*/
public void disconnection() {
channelSftp.quit();
}
/**
* 단일 파일 즉시 업로드
*
* @param sftpHost
* SFTP 접속 주소(host:IP)
* @param sftpUser
* SFTP 접속 USER
* @param sftpPass
* SFTP 접속 패스워드
* @param sftpPort
* SFTP 접속 포트
* @param sftpWorkingDir
* SFTP 작업 경로
* @param fileFullPath
* 업로드할 파일 경로
*/
public static boolean directUpload(
String sftpHost, String sftpUser, String sftpPass,
int sftpPort, String sftpWorkingDir, String fileFullPath) {
boolean result = true;
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
System.out.println("preparing the host information for sftp.");
try {
JSch jsch = new JSch();
session = jsch.getSession(sftpUser, sftpHost, sftpPort);
session.setPassword(sftpPass);
// Host 연결.
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
// sftp 채널 연결.
channel = session.openChannel("sftp");
channel.connect();
// 파일 업로드 처리.
channelSftp = (ChannelSftp) channel;
channelSftp.cd(sftpWorkingDir);
File f = new File(fileFullPath);
String fileName = f.getName();
//fileName = URLEncoder.encode(f.getName(),"UTF-8");
channelSftp.put(new FileInputStream(f), fileName);
} catch (Exception ex) {
System.out.println(ex.toString());
System.out.println("Exception found while tranfer the response.");
result = false;
} finally {
// sftp 채널을 닫음.
channelSftp.exit();
// 채널 연결 해제.
channel.disconnect();
// 호스트 세션 종료.
session.disconnect();
}
return result;
}
출처 : https://blog.naver.com/marnet/220379707617
반응형
'개발 > java & jsp' 카테고리의 다른 글
[spring] SPRING을 이용한 SFTP 파일 업로드[펌] (0) | 2020.01.22 |
---|---|
[JAVA] 자바 MYSQL 삽입,삭제,수정,검색 [펌] (0) | 2020.01.11 |
[java] SFTP 파일업로드/다운로드 [펌] (0) | 2020.01.11 |
[java] 이클립스에 JAR 파일 추가하기 [펌] (0) | 2020.01.10 |
[JAVA] 자바 FTP 파일 전송 [펌] (0) | 2020.01.09 |
Comments