- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダの中身を知りたい)
フォルダの中身を表示する方法
このQ&Aのポイント
- フォルダの中身を知りたい場合、opendirとreaddir関数を使用します。
- opendir関数を使用して指定したフォルダを開き、readdir関数を使用してフォルダ内のファイル名を取得します。
- 表示したいフォルダのパスを指定し、ファイル名を取得した後は、それを使用して画像などを表示することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> こうするとフォルダの中身が表示されません。 $FORM{'user'}の内容やディレクトリ構成など、第三者にはわからない事が多いので、何が正しいとか間違ってるとか答えづらいです。 とりあえず、@dir_fileが想定どおりできているのか、おかしいのかは確認しましたか? 以下、不確かな予測。 @dir_file はちゃんとできているのに、中身を表示する処理に問題があるのかもしれません。 たまに見受ける間違いは、@dir_fileの中身を利用する時にパスを付けていない場合があります。 例えば1番目のファイルにアクセスするには $open_folder.'/'.$dir_file[0] と、パスを付ける必要がありますが大丈夫ですか?
お礼
スイマセン、言葉が足りませんでしたね。 $FORM{'user'}の中身はそれぞれのディレクトリ名になっています。 たとえば、 00001 00002 00003 というフォルダがあれば、 $FORM{'user'} = 00001 $FORM{'user'} = 00002 $FORM{'user'} = 00003 と順次に代入されます。 $open_folder = $FORMS{'user'}; の状態の時は、$open_folderにきちんとそれぞれが代入され、それぞれのフォルダの中身のファイルが @dir_fileに入り、、、という感じでした。 $open_folder = "../../img/cgi-bin/uploader/" . $FORM{'user'}; opendir dir , $open_folder; @dir_file = readdir(dir); にしてからは print "中身:@dir_file<BR>\n"; としても、何も表示されないので、@dir_fileに値が入っていないということですよね。 ですが、指定したいフォルダ($FORM{'user'}が00001だとする)である、 ../../img/cgi-bin/uploader/00001 に入っているファイル(今回は画像ファイルとします)を表示させるために $img = $open_folder . "/test.gif"; print "<IMG SRC='$img'><BR>\n"; とすると、きちんと表示される、という状態です。
補足
追記というか状況が少々かわりました。 フォルダの中にあるファイルを表示する場合は ../../img/cgi-bin/uplader… とし、フォルダの中身を取得する場合は ../../html/(以下は上記と一緒) とすると、@dir_file に値が入りました。 実際の階層は - cgi-bin - uploader - html - img - cgi-bin - uploader -test.gif★ のようになっています。 この★のファイルを指定しているのに、やりたいことによって指定の仕方がなぜ違うのか、不明ですが。 (htmlフォルダの中にindex.htmlがあり、そこが中心となっているためか、cgi側から画像を表示させる場合などもhtmlを指定すると、表示できない。) @dir_fileの中身をみると、 ファイル名の後に 「Thumbs.db」という文字が。 これはいったい何を意味しているのでしょうか?