본문 바로가기
CLASS/SPRINGBOOT

#9-3 / CDN FTP 파일 업로드 사용법

by hingu 2024. 8. 27.

sftp는 접속 불가

  👀 cdn 서버로 이미지 및 컨텐츠 파일 전송  

우리팀 ftp에 각자 디렉토리 하나 만들어놓음

 

 

- jsp

<body>
	<form method="post" id="frm" action="./cdn_uploadok.do" enctype="multipart/form-data">
		<input type="hidden" name="url" value="172.30.1.16">
		<input type="file" name="mfile">
		<input type="button" value="CDN 전송" onclick="file_ok()">
	</form>
</body>

<script>
	function file_ok(){
		frm.submit();
	}
</script>

 

- Controller

//cdn 서버로 이미지 및 컨텐츠 파일 전송 메소드
@PostMapping("/cdn_uploadok.do")
public String cdn_uploadok(ServletResponse res,Model m,
        @RequestParam(defaultValue="",required=false) String url,
        MultipartFile mfile) {
    res.setContentType("text/html;charset=utf-8");

    FTPClient ftp = new FTPClient(); //FTP 접속 클라이언트 객체 생성
    ftp.setControlEncoding("utf-8"); //한글파일 깨짐 방지
    FTPClientConfig fc = new FTPClientConfig(); //FTP 접속 환경설정
    try {
        String filename = mfile.getOriginalFilename(); //업로드 파일명
        String host = url; //FTP 호스트
        String user = "admin"; //FTP 접속 아이디
        String pw = "123123"; //FTP 접속 패스워드
        int port = 20021; //FTP 접속 포트번호

        ftp.configure(fc); //접속 환경을 새롭게 setting
        ftp.connect(host,port); //FTP 서버에 접속
        if(ftp.login(user, pw)) { //FTP 사용자에 맞게 접속 환경을 설정
            //file이 binary가 아니고 text(ascii)면 에러남
            //ftp.setFileType(FTP.ASCII_FILE_TYPE); //ascii 경우 (txt,html,css,css...)
            ftp.setFileType(FTP.BINARY_FILE_TYPE); //이미지 , 동영상, PDF, XLS..

            int result = ftp.getReplyCode(); //CDN서버에서 파일 업로드 지현형태 발생
            System.out.println("지연코드 :" + result);

            //FTP의 해당 디렉토리에 파일을 Stream 형태로 업로드 
            boolean ok = ftp.storeFile("/home/admin/내가만든폴더명/"+filename, mfile.getInputStream());
            if(ok == true) {
                System.out.println("정상적으로 cdn 서버로 파일 업로드 완료했습니다.");
            }else {
                System.out.println("CDN 파일 업로드 실패");
            }
        }else {
            System.out.println("FTP ID 및 패스워드 오류 발생!");
        }
    }catch(Exception e) {
        System.out.println("CDN 서버 접속 오류 발생!!");
    }finally {
        try {
            ftp.disconnect(); //ftp 접속해제 필수
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return null;
}

=> 잘 올라감니당

 

방화벽 다 꺼줘야 올라감