メンバーの一意のフォルダ内のすべてのサブディレクトリに保存されているファイルのセットを一覧表示しようとしています。
ここでは、ファイルがどのように保存されているかを確認できます。
date_default_timezone_set('EST');
$id = $_SESSION['id'];
$udir = "members/".$id."/";
$date = date("Y.m.d");
$curdir = $udir.$date."/";
$datetime = date("Y.m.d.G.i.s");
$fname = $_FILES["file"]["name"];
$extn = pathinfo($fname, PATHINFO_EXTENSION);
if(!is_dir($curdir)){
mkdir($udir.$date, 0700);
}
$ufile = $curdir.$datetime.".".$extn;
$allexts = array("jpg", "jpeg", "gif", "png");
$ext = end(explode(".", $_FILES["file"]["name"]));
if((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($ext, $allexts)){
if (move_uploaded_file($_FILES['file']['tmp_name'], $ufile)) {
echo "File upload was successful.";
} else {
echo "An error has occured. Please try again.";
}
}
else{
echo "Invalid file. Please try again.";
}
今、私はここに示されているようにそれらのファイルを利用しようとしています:
$id = $_SESSION['id'];
$udir = "members/".$id."/";
if ($dir = opendir("$udir")) {
while (false !== ($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$list .= '<li><a href="'.$udir.$file.'">'.$file.'</a></li>';
}
}
closedir($dir);
}
ご想像のとおり、これはメンバーの一意のIDフォルダー内のサブディレクトリのリストのみを返します。したがって、ディレクトリを掘り下げているように見える再帰関数を試してみましたが、2つをマージする方法がわかりません。以下のコードはすべてのファイルのフルパスを返しますが、それは私が得た限りです。
$path = realpath("$udir");
$recur = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach($recur as $files => $recur){
echo "$files";}
これらの2つの機能をマージする際のガイダンス、または完全な代替手段をいただければ幸いです。
編集:私は以下の提案を利用しようとしましたが、$listを呼び出しても結果が得られません。これが変更されたコードです。
$id = $_SESSION['id'];
$udir = "members/".$id."/";
if ($dir = opendir($udir)) {
while (false !== ($file = readdir($dir))) {
if ($file != "." && $file != "..") {
if (is_dir($file) === true){
$dir = opendir("$file");
$file = readdir($dir);
$list .= '<li><a href="'.$udir.$file.'">'.$file.'</a></li>';
closedir($file);
}
else if (is_file($file) === true){
$list .= '<li><a href="'.$udir.$file.'">'.$file.'</a></li>';
}
}
}
closedir($dir);
}