써먹는 웹개발
[Java] SFTP 파일업로드/다운로드 본문
728x90
반응형
SFTP는 기존의 FTP 에서 보안(secure)을 강화한것으로 기본포트가 FTP는 21번이지만 SFTP는 22번입니다.
아래 사이트에서 jar를 받아서 사용하시면 됩니다.
1) SFTP 서버 접속
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | 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(); } | cs |
728x90
반응형
'웹개발 > Java & Jsp' 카테고리의 다른 글
[Jsp] textarea 텍스트 줄 바꿈 엔터 jsp jstl/java (0) | 2023.10.26 |
---|---|
쿠키 셋팅 및 가져오기 (0) | 2023.10.23 |
[Java&Js] 윈도우 다운로드 경로에 (엑셀) 파일 다운로드 순서 (0) | 2023.10.06 |
[Jsp] jstl 작년 날짜 구하기 (0) | 2023.09.29 |
[Java] 파일업로드 최대사이즈가 10mb 넘어서 에러나는 경우 해결방법 (0) | 2023.09.11 |
Comments