2017-01-09 33 views
2

これは、ディレクトリの内容のリストを出力します。しかし、ディレクトリには画像とサブディレクトリの両方が含まれているため、それらを区別する方法はありません。ファイルとディレクトリを区別して区別できますか?

header('Content-Type: text/plain'); 

$c = curl_init(); 
curl_setopt($c, CURLOPT_URL, 'ftp://username:[email protected]/Images/'); 
curl_setopt($c, CURLOPT_DIRLISTONLY, TRUE); 
$r = curl_exec($c); 
echo $r; 

検索中には、cURLのメーリングリストでsomeone else asking the same questionを明らかにしたが、私は答えを見つけることができません。

理想的には、私はPHPのオブジェクトまたは配列として、私は再び解析する必要があるテキストとして、コンテンツのリストを受信したいと思います。ファイル名はで、には改行が含まれている可能性は低いので、おそらくそれらを分割することはできますが、それは壊れやすいと感じています。

私が実際にとしたいのは、がすべての内容を含むディレクトリ全体をダウンロードすることです。

+0

したがって、 '$ r'にディレクトリとファイルのリストが含まれている場合、itemに拡張子があるかどうかを確認するよりも、もし各ファイルのmime-typeをチェックする必要がある以上に拡張子が足りない場合 – Justinas

+0

*ディレクトリ全体をダウンロードするために実際に何をしたいのですか?...可能であれば、sshを使ってディレクトリを圧縮し、zipをダウンロードします。カール...もしそうでなければ... fpt_ *関数を使ってラッパーを書くのですが、なぜこれをしたいのですか? – donald123

+0

私はリモートサーバー@ donald123へのFTPアクセスしか持っていません。そして、時々私はその中のすべてをダウンロードしたいと思うし、時にはファイルのリストを読んでそれらのうちのいくつかをダウンロードしたいだけだ。 – TRiG

答えて

1

方法1

代わりFTP Functionsを使用してください。 ftp_nlistでftpからリストを取得し、ファイルまたはフォルダがftp_chdirであることを確認できます。要求されたディレクトリにあなたのためのフォルダのリストとファイルリストを言うサーバー上のPHPファイルを作成します

function ftp_is_dir($conn_id, $dir) 
{ 
    if(@ftp_chdir($conn_id, $dir)) { 
     ftp_chdir($conn_id, '/../'); 
     return true; 
    } else { 
     return false; 
    } 
} 

方法2

:これは、例えばフォームphp.netです。たとえば、domain.com/get-list.php?folder=something/another-folderでリストを取得し、リストをjson_encodeでエンコードし、サーバでjson_decodeでデコードします。

この方法はFTPなしでも動作します。

方法3

あなたは、PHP 5.0.0のとおりis_dir — Tells whether the filename is a directory

を使用することができ、この機能はまた、いくつかのURL ラッパーで使用することができます。どのような ラッパーがstat()ファミリの機能をサポートしているかは、サポートされているプロトコルとラッパーを参照してください。

+1

標準libがこれらの関数の周りにクラスラッパーをまだ作成していないことが奇妙です... – Rafael

+1

私はこのシステムへの読み取り専用アクセスを持っています(私は質問で明確にすべきでした)ので、方法2は出ていますが、 2つは有望です。私は試して見ます。 – TRiG

関連する問題