• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダの中身を知りたい)

フォルダの中身を表示する方法

このQ&Aのポイント
  • フォルダの中身を知りたい場合、opendirとreaddir関数を使用します。
  • opendir関数を使用して指定したフォルダを開き、readdir関数を使用してフォルダ内のファイル名を取得します。
  • 表示したいフォルダのパスを指定し、ファイル名を取得した後は、それを使用して画像などを表示することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

> こうするとフォルダの中身が表示されません。 $FORM{'user'}の内容やディレクトリ構成など、第三者にはわからない事が多いので、何が正しいとか間違ってるとか答えづらいです。 とりあえず、@dir_fileが想定どおりできているのか、おかしいのかは確認しましたか? 以下、不確かな予測。 @dir_file はちゃんとできているのに、中身を表示する処理に問題があるのかもしれません。 たまに見受ける間違いは、@dir_fileの中身を利用する時にパスを付けていない場合があります。 例えば1番目のファイルにアクセスするには $open_folder.'/'.$dir_file[0] と、パスを付ける必要がありますが大丈夫ですか?

w-inty
質問者

お礼

スイマセン、言葉が足りませんでしたね。 $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"; とすると、きちんと表示される、という状態です。

w-inty
質問者

補足

追記というか状況が少々かわりました。 フォルダの中にあるファイルを表示する場合は ../../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」という文字が。 これはいったい何を意味しているのでしょうか?

関連するQ&A