Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP의 ftp_fget() 함수 – FTP 서버 파일을 로컬 파일로 저장하기

PHP의 ftp_fget() 함수는 FTP 서버에서 파일을 다운로드하여 이미 열려 있는 로컬 파일에 저장하는 데 사용됩니다. 일반적인 ftp_get() 함수와 달리, 이 함수는 파일 포인터를 인자로 받기 때문에 이미 fopen()으로 연 파일 스트림에 직접 데이터를 기록할 수 있다는 점이 특징입니다.

문법(Syntax)

ftp_fget(con, open_file, server_file, mode, startpos);

매개변수(Parameters)

  • con − FTP 연결 리소스를 의미합니다. ftp_connect()로 생성된 연결을 전달합니다.

  • open_file − 다운로드한 데이터가 저장될 로컬 파일 포인터입니다. fopen()으로 미리 열어두어야 합니다.

  • server_file − FTP 서버에서 다운로드할 파일의 경로입니다.

  • mode − 전송 모드를 지정합니다. FTP_ASCII(텍스트 모드) 또는 FTP_BINARY(바이너리 모드) 중 하나를 사용할 수 있습니다.

  • startpos − 다운로드를 시작할 위치(오프셋)를 지정합니다. 이어받기(resume) 기능에 활용되며, PHP 4.3.0부터 추가된 매개변수입니다.

반환값(Return)

ftp_fget() 함수는 다운로드에 성공하면 TRUE를 반환하고, 실패하면 FALSE를 반환합니다.

예제(Example)

다음 예제는 FTP 서버에 있는 "demo.txt" 파일을 다운로드하여 로컬의 "new.txt" 파일에 저장하는 코드입니다.

<?php
    $ftp_server = "192.168.0.4";
    $ftp_user = "amit";
    $ftp_pass = "tywg61gh";
    $con = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
    $login = ftp_login($con, $ftp_user, $ftp_pass);
    $my_serverfile = "demo.txt";
    $local_file = "new.txt";
    $file_pointer = fopen($local_file, "w");
    if (ftp_fget($con, $file_pointer, $my_serverfile, FTP_ASCII, 0)) {
        echo "Written to $local_file!";
    } else {
        echo "Error in downloading the $my_serverfile!";
    }
    ftp_close($con);
    fclose($file_pointer);
?>

코드 설명

  1. 먼저 ftp_connect()로 FTP 서버에 연결하고, ftp_login()으로 사용자 인증을 수행합니다.
  2. fopen()을 사용해 로컬 파일 "new.txt"를 쓰기 모드(w)로 열어 파일 포인터를 생성합니다.
  3. ftp_fget() 함수를 호출하여 서버의 "demo.txt" 파일을 ASCII 모드로 다운로드하고, 열려 있는 파일 포인터에 내용을 기록합니다.
  4. 작업이 완료되면 ftp_close()와 fclose()로 각각 FTP 연결과 파일 핸들을 반드시 닫아 리소스를 해제합니다.