PHPにおいてFTPサーバへ接続後、
ファイルを取得するメモ書きです。
『[PHP]FTPサーバからファイルの一覧を取得』の続きになります。
ソースコード
<?php $ftp_server = "hogehoge.com"; $ftp_user = "test_user"; $ftp_pass = "test_pass"; $ftp_target_dir = "/test_dir"; $remote_dir = "/get_file/"; $connect_id = ftp_connect( $ftp_server ); if( ftp_login( $connect_id , $ftp_user , $ftp_pass ) ) { echo 'FTPログイン成功'; } else { echo 'FTPログイン失敗'; ftp_close( $connect_id ); exit; } # No.01 if( ftp_chdir( $connect_id , $ftp_target_dir ) ) { echo 'ディレクトリ遷移成功 >>> ' . ftp_pwd( $connect_id ); # No.02 if( $ftp_file_list = ftp_nlist( $connect_id , "." ) ) { # No.03 foreach( $ftp_file_list as $ftp_file ) { # No.04 ftp_get( $connect_id , "{$remote_dir}{$ftp_file}" , $ftp_file , FTP_BINARY ); } } } else { echo 'ディレクトリ遷移失敗'; ftp_close( $connect_id ); exit; } ftp_close( $connect_id ); ?>
解説
# No.01
PHP関数[ftp_chdir]でカレントディレクトリを遷移します。
ディレクトリ遷移成功時は【TRUE】を、失敗時は【FALSE】を返します。
# No.02
PHP関数[ftp_nlist]を用いて対象ディレクトリ内のファイル一覧を取得します。
『No.01』で対象ディレクトリを遷移しているので
第二引数は現在のディレクトリを指す【.】を指定しています。
成功時はファイルの一覧(array型)を、失敗時は【FALSE】を返します。
# No.03
foreachを用いて対象ディレクトリのファイル一覧をループさせます。
# No.04
PHP関数[ftp_get]を用いて対象ディレクトリ内の全ファイルを取得しています。
第一引数にはサーバにFTPコネクションをしている変数[$connect_id]、
第二引数には取得したファイルの保存先を、
第三引数には取得するファイル名を、
第四引数には転送モードをそれぞれ指定します。
今回の例ではカレントディレクトリを移動してあるのでルートは省略してます。
また、第四引数には【FTP_BINARY】か【FTP_ASCII】を指定できます。