PHP의 ftp_fput() 함수는 이미 열려 있는 로컬 파일의 내용을 읽어 FTP 서버상의 파일로 업로드할 때 사용됩니다. 일반적인 ftp_put() 함수와 달리, 파일 경로 대신 fopen()으로 생성한 파일 포인터(리소스)를 인자로 받는다는 점이 특징입니다.
구문
ftp_fput(con, remote_file, open_file, mode, startpos);
매개변수
con − ftp_connect()로 생성한 FTP 연결 리소스입니다.
remote_file − 업로드될 원격(서버) 파일의 경로입니다.
open_file − 업로드할 데이터를 담고 있는, 이미 열려 있는 로컬 파일 포인터입니다.
mode − 전송 모드를 지정합니다. 텍스트 파일은 FTP_ASCII, 이미지·실행 파일 등은 FTP_BINARY를 사용합니다.
startpos − 업로드를 시작할 위치입니다. 기본값은 0이며, 이 값을 지정하면 부분 전송(이어 올리기)에 활용할 수 있습니다.
반환 값
ftp_fput() 함수는 업로드에 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
예제
다음은 로컬 파일 "new.txt"를 연 뒤, FTP 서버의 "demo.txt"로 업로드하는 예제입니다.
<?php
$ftp_server = "192.168.0.4";
$ftp_user = "amit";
$ftp_pass = "tywg61gh";
// FTP 서버에 연결
$con = ftp_connect($ftp_server) or die("$ftp_server 에 연결할 수 없습니다");
$login = ftp_login($con, $ftp_user, $ftp_pass);
$my_file = "demo.txt"; // 서버에 저장될 파일명
$local_file = "new.txt"; // 업로드할 로컬 파일
$file_pointer = fopen($local_file, "r");
// 파일 업로드 시도
if (ftp_fput($con, $my_file, $file_pointer, FTP_ASCII)) {
echo "업로드 완료!";
} else {
echo "파일 업로드 중 오류가 발생했습니다!";
}
// 연결 및 파일 핸들 종료
ftp_close($con);
fclose($file_pointer);
?>
참고 사항
바이너리 파일(이미지, 압축 파일 등)을 다룰 때는 반드시 FTP_BINARY 모드를 사용해야 파일 손상을 방지할 수 있습니다. 또한 작업이 끝난 후에는 ftp_close()로 FTP 연결을, fclose()로 파일 포인터를 반드시 닫아 리소스 누수를 예방하는 것이 좋습니다.