수색…


통사론

  • FTPClient connect (InetAddress 호스트, int 포트)
  • FTPClient 로그인 (문자열 사용자 이름, 문자열 암호)
  • FTPClient disconnect ()
  • FTPReply getReplyStrings ()
  • 부울 storeFile (String remote, InputStream local)
  • OutputStream storeFileStream (String 원격)
  • 부울 setFileType (int fileType)
  • 부울 completePendingCommand ()

매개 변수

매개 변수 세부
숙주 FTP 서버의 호스트 이름 또는 IP 주소
포트 FTP 서버 포트
사용자 이름 FTP 서버 사용자 이름
암호 FTP 서버 암호

FTP 서버 연결 및 로그인

Java에서 FTP를 사용하려면 새 FTPClient 를 작성한 다음 .connect(String server, int port).login(String username, String password) 사용하여 서버에 연결하고 로그인해야합니다.

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
//Import all the required resource for this project.

public class FTPConnectAndLogin {
    public static void main(String[] args) {
        // SET THESE TO MATCH YOUR FTP SERVER //
        String server = "www.server.com"; //Server can be either host name or IP address.
        int port = 21;
        String user = "Username";
        String pass = "Password";

        FTPClient ftp = new FTPClient;
        ftp.connect(server, port);
        ftp.login(user, pass);
    }
}

이제 기본 사항을 완료했습니다. 그러나 서버에 연결하는 중 오류가 발생하면 어떻게해야합니까? 우리는 무언가 잘못되었을 때를 알고 오류 메시지를 듣기를 원할 것입니다. 연결하는 동안 오류를 잡아내는 코드를 추가해 보겠습니다.

try {
    ftp.connect(server, port);
    showServerReply(ftp);
    int replyCode = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(replyCode)) {
        System.out.printIn("Operation failed. Server reply code: " + replyCode)
        return;
    }
    ftp.login(user, pass);
} catch {

}

우리가 방금 한 일을 단계별로 나누자.

showServerReply(ftp);

이것은 나중에 우리가 만들 함수를 의미합니다.

int replyCode = ftp.getReplyCode();

이것은 응답 / 오류 코드를 서버에서 가져 와서 정수로 저장합니다.

if (!FTPReply.isPositiveCompletion(replyCode)) {
    System.out.printIn("Operation failed. Server reply code: " + replyCode)
    return;
}

그러면 응답 코드를 검사하여 오류가 있는지 확인합니다. 오류가있는 경우, "작업 실패 : 서버 응답 코드 :"와 오류 코드가 인쇄됩니다. 다음 단계에서 추가 할 try / catch 블록도 추가했습니다. 다음으로, ftp.login() 에서 오류를 검사하는 함수를 작성해 보겠습니다.

boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
    System.out.println("Failed to log into the server");
        return;
    } else {
        System.out.println("LOGGED IN SERVER");
    }

이 블록을 너무 세분화합시다.

boolean success = ftp.login(user, pass);

이것은 FTP 서버에 로그인하려고 시도 할뿐만 아니라 결과를 부울로 저장합니다.

showServerReply(ftp);

이렇게하면 서버가 우리에게 메시지를 보냈지 만 다음 단계에서이 함수를 만들어야합니다.

if (!success) {
System.out.println("Failed to log into the server");
    return;
} else {
    System.out.println("LOGGED IN SERVER");
}

이 명령문은 우리가 성공적으로 로그인했는지 확인합니다. 그렇다면 "서버에 로그인"을 인쇄하고, 그렇지 않으면 "서버에 로그인하지 못했습니다"가 인쇄됩니다. 지금까지 우리 스크립트입니다.

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectAndLogin {
    public static void main(String[] args) {
        // SET THESE TO MATCH YOUR FTP SERVER //
        String server = "www.server.com";
        int port = 21;
        String user = "username"
        String pass = "password"

        FTPClient ftp = new FTPClient
        try {
            ftp.connect(server, port)
            showServerReply(ftp);
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                    System.out.println("Operation failed. Server reply code: " + replyCode);
                    return;
                }
            boolean success = ftp.login(user, pass);
            showServerReply(ftp);
            if (!success) {
                System.out.println("Failed to log into the server");
                return;
            } else {
                System.out.println("LOGGED IN SERVER");
            }
        } catch {

        }
    }
}

이제 전체 프로세스에서 오류가 발생할 경우를 대비하여 Catch 블록을 작성해 보겠습니다.

} catch (IOException ex) {
    System.out.println("Oops! Something went wrong.");
    ex.printStackTrace();
}

완료된 catch 블록이 이제 "Oops! Something went wrong"라는 문구를 인쇄합니다. 스택 추적은 오류가있는 경우에 발생합니다. 이제 우리의 마지막 단계는 우리가 잠시 동안 사용해온 showServerReply() 를 만드는 것입니다.

private static void showServerReply(FTPClient ftp) {
    String[] replies = ftp.getReplyStrings();
    if (replies != null && replies.length > 0) {
    for (String aReply : replies) { 
        System.out.println("SERVER: " + aReply);
        }
    }
}

이 함수는 FTPClient 를 변수로 사용하고 "ftp"라고합니다. 그런 다음 서버의 모든 서버 응답을 문자열 배열에 저장합니다. 다음으로 메시지가 저장되었는지 확인합니다. 어떤 것이 있으면 각각을 "SERVER : [reply]"로 인쇄합니다. 이제 우리는 그 기능을 완료했습니다. 이것은 완성 된 스크립트입니다 :

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectAndLogin {
    private static void showServerReply(FTPClient ftp) {
        String[] replies = ftp.getReplyStrings(); 
        if (replies != null && replies.length > 0) {
        for (String aReply : replies) {
            System.out.println("SERVER: " + aReply);
            }
        }
    }

    public static void main(String[] args) {
        // SET THESE TO MATCH YOUR FTP SERVER //
        String server = "www.server.com";
        int port = 21;
        String user = "username"
        String pass = "password"

        FTPClient ftp = new FTPClient
        try {
            ftp.connect(server, port)
            showServerReply(ftp);
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                System.out.println("Operation failed. Server reply code: " + replyCode);
                return;
            }
            boolean success = ftp.login(user, pass);
            showServerReply(ftp);
            if (!success) {
                System.out.println("Failed to log into the server");
                return;
            } else {
                System.out.println("LOGGED IN SERVER");
            }
        } catch (IOException ex) {
            System.out.println("Oops! Something went wrong.");
            ex.printStackTrace();
        }
    }
}

먼저 새로운 FTPClient 를 만들고 서버에 연결하고 .connect(String server, int port).login(String username, String password) 사용하여 로그인하십시오. 코드가 서버에 연결되지 않는 경우 try / catch 블록을 사용하여 연결하고 로그인하는 것이 중요합니다. 또한 연결 및 로그인을 시도 할 때 서버에서 수신 할 수있는 메시지를 확인하고 표시하는 함수를 만들어야합니다.이 함수는 " showServerReply(FTPClient ftp) "라고합니다.

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPConnectAndLogin {
    private static void showServerReply(FTPClient ftp) {
        if (replies != null && replies.length > 0) {
        for (String aReply : replies) {
            System.out.println("SERVER: " + aReply);
            }
        }
    }

public static void main(String[] args) {
    // SET THESE TO MATCH YOUR FTP SERVER //
    String server = "www.server.com";
    int port = 21;
    String user = "username"
    String pass = "password"

FTPClient ftp = new FTPClient
try {
    ftp.connect(server, port)
    showServerReply(ftp);
    int replyCode = ftpClient.getReplyCode();
    if (!FTPReply.isPositiveCompletion(replyCode)) {
            System.out.println("Operation failed. Server reply code: " + replyCode);
            return;
        }
    boolean success = ftp.login(user, pass);
    showServerReply(ftp);
    if (!success) {
        System.out.println("Failed to log into the server");
            return;
        } else {
            System.out.println("LOGGED IN SERVER");
        }
    } catch (IOException ex) {
        System.out.println("Oops! Something went wrong.");
        ex.printStackTrace();
        }
    }
}

이 후에는 FTP 서버를 Java 스크립트에 연결해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow