PEAR:Net_FTPでFTPサーバーのディレクトリとファイルの一覧を取得する方法

リンクシェアのマーチャンダイザープログラムで使う予定のFTP接続に関する覚書第2弾。FTPサーバーへの接続とログインの方法の次は接続先のディレクトリやファイル情報を取得してみます。

新しく登場するメソッド(関数)は次のふたつだけです。

pwd ( )
サーバ上で、現在選択されているディレクトリを返します。成功時には絶対パスを文字列で、 それ以外は PEAR::Errorを返します。
例:$test -> pow( );

ls ( $dir, $mode)
ファイル/ディレクトリ/その両方 の一覧、あるいは 整形されていない配列(PHP の ftp_rawlist() 関数と同じ形式) を返します。引数は取得したいディレクトリのパスと取得内容をあらわす定数です。
例:$test -> ls(" / folder / file " );

ではさっそくコードです。ここでは接続先のファイルの情報だけを取得します。

$dirname は現在のディレクトリ(カレントディレクトリ)のパスを表わす変数です。これをls ( ) の引数にしてあげます。ls ( ) の第2引数はどの情報を取ってくるかを決める定数です。下記のどれかを指定します。

  • NET_FTP_FILES_ONLY
    Net_FTP::ls() の戻り値を、ファイル名(ディレクトリ名は含まない)の配列にします。
  • NET_FTP_DIRS_ONLY
    Net_FTP::ls() の戻り値を、ディレクトリ名(ファイル名は含まない)の配列にします。
  • NET_FTP_DIRS_FILES
    Net_FTP::ls() の戻り値を、ディレクトリ名とファイル名の両方を含む配列にします。
  • NET_FTP_RAWLIST
    Net_FTP::ls() の戻り値を、PHP 関数の ftp_rawlist() と同じ形式の配列にします。

ls ( ) の戻り値はファイル名や更新日時、ファイルサイズなどを含む連想配列になります。

ただファイルやディレクトリがたくさんあると取得するのに時間がかかるのがちょっと・・・。

そうのひとりごと

© 2017 PAOLOG