FTP 업로드 및 다운로드 파일을 통해 자바

웹 개발자들은 종종 만남은 업로드 파일, 저장된 파일에 사용자가 필요합니다.

일반적으로 우리는 톰캣과 같은 서버에 저장된 파일을 두지 않지만, 저장 파일을 전용 파일 서버가있다.

어떻게, 파일 서버는 전용 서버로 파일을 전송하기 위해 FTP를 사용하도록 선택할 수있는이 시간에 파일을 저장합니다.

전송 파일을 FTP를 사용하여, 우리가 필요로하는 항아리 패키지, 파일 서버는 우분투를 선택했다

모든 작업은 실질적으로,이 클래스 기반 객체를 FTPClient된다

이 문제에 관심을 지불 할 필요가있는 경우 FTP 서버에 파일을 업로드하려면, 그렇지 않은 경우 인코딩 형식, 깨진 할 서버를 파일 이름을 인코딩하는 것입니다.

이제 어떻게 FTP를 통해 업로드 및 다운로드 파일입니다.

FTP 서버
        // FTP 클라이언트 만들기는, 모든 작업은 FTPClinet 기준으로
        는 FTP = 새로운 새로운 FTPClient () FTPClient,
        
        FTP 서버에 // 연결
        ftp.connect ( "192.168.218.133");
        
        // 서버가 인증을 필요로하는 경우, 계정 및 암호를 필요에 로그인 할 때
        ( "왓슨", "yehh1995")을 ftp.login;
        
        // 서버 상태 코드를 반환받을
        INT = ftp.getReplyCode 답글 ();
        에서 System.out.println (답글);
        
        / *
         * 여부를 결정 성공적으로 연결
         긍정적 인 반응의 완료로 시작 * 2 개 모든 코드.
         * FTP 서버가 성공적으로 완료 명령을 완료하는 최종 긍정적 인 반응을 보내드립니다.
         * /
        IF (FTPReply.isPositiveCompletion (답글)!) {
            Ftp.disconnect은 ();
            에서 System.out.println이 ( "연결 실패");
            반환;
        }
        에서 System.out.println는 ( "성공적으로 연결");
폴더를 전환
ftpClient.changeWorkingDirectory를 ( "/ FTP");
폴더를 만들
내가 내 / FTP / 이미지, 우리는 먼저이 파일을 작성해야합니다에 파일을 저장하려는

//이 성공적으로 생성 여부를 나타내는 부울 값을 반환
부울 isCreate = ftpClient.makeDirectory ( "/ FTP / 이미지");
업로드 파일이
// 파일 업로드 유형 설정
ftpClient.setFileType (FTP.BINARY_FILE_TYPE를);
 
// 파일을 얻을 입력 스트림
FileInputStream에 새로운 새 FIS = FileInputStream에 ( "E : /1.jpg");
 
FTP 서버로 파일을 업로드하는 // 호 storeFile 방법
// 최초의 파라미터를 서버로 업로드되는 파일 이름을 포함
부울 isUpload = ftpClient.storeFile ( "/ FTP / 이미지 / upload.jpg", FIS)
횡단 현재 폴더
FTPFILE [] = ftpClient.listFiles 목록 ();
(FTPFILE FTPFILE : 목록)에 대한 {
    에서 System.out.println ( "이름 : "+ ftpFile.getName ());
    에서 System.out.println ("그룹 : "+ ftpFile.getGroup ());
    에서 System.out.println ("RwaListing : "+ ftpFile.getRawListing ());
    에서 System.out.println ( "크기 :"+ ftpFile.getSize ());
    에서 System.out.println ( "유형 :"+ ftpFile.getType ());
    에서 System.out.println ( "사용자 :"+ ftpFile.getUser ());
    에서 System.out.println ( "타임 스탬프 :"+ ftpFile.getTimestamp ());
    에서 System.out.println ( "클래스 :"+ ftpFile.getClass ());
 
}
输入如下图所示

다운로드 파일
의 FileOutputStream의 FOS = 새로운 새로운 FileOutputStream에 ( "E : /upload.jpg은");
부울 isDown = ftpClient.retrieveFile ( "/를 FTP / ImagesRF 로열티 무료 / upload.jpg", FOS),
전화 retrieveFile, 첫 번째 인수는 다운로드 할 것입니다 이미지 경로는 제 2 파라미터는 브라우저에 대응할 수 있으며, 상기 출력 스트림은 로컬 파일에 저장 될 수 있고, 상기 프로세싱 파일 출력 스트림이다.

참고 :
이 파일 업로드 1. storeFile 유형을 호출하기 전에 설정해야합니다, 서버에 업로드 파일 그렇지 않으면 상황은 손상된 파일을 나타날 수 있습니다

일부 유형은 FTP 클래스의 정적 멤버 변수

여기에 있기 때문에 업로드 바이트 스트림은 선택한 모든 BINARY_FILE_TYPE에있다

2. 파일 이름 인코딩 문제

파일 이름을 업로드 할 경우, 매우 가능성이 서버 내부 왜곡, 중국어,이 원인이 우리의 바이트 코드 인코딩 불일치로 인코딩 서버 때문이다.

이 솔루션은 파일 서버 인코딩 UTF-8, 다시 파일 이름을 다시 인코딩을 수정하는 것입니다, 다음 storeFile 통과

문자열로 새로운 캐릭터 = ( "/ FTP / 이미지 / ."UTF-8 ".getBytes (a .JPG가 이미지")의 "ISO-8859");
부울 isUpload = ftpClient.storeFile (경로 FIS) ;
3. 권한 문제

작성 및 파일 권한을 업로드 문제 계정 권한 이후, 파일 폴더를 읽을 수 없습니다 파일의 원인이됩니다 (700),되었을 수도 있습니다. 이 시간 필요가 수동으로 파일 사용 권한을 설정합니다.

// 설정 파일 권한이 
부울는 isset = ftp.sendSiteCommand ( "chmod를 744 "+ 경로)
 
원본 링크 : HTTPS : //blog.csdn.net/WatsonYee/article/details/82389769

게시 40 개 원래 기사 · 원 찬양 57 ·은 25 만 + 조회수

추천

출처blog.csdn.net/With__Sunshine/article/details/105244681