- ベストアンサー
CGIがある場所以外のディレクトリの内容表示方法
- ディレクトリ内にあるファイルの一覧を表示する方法について、CGIがある場所以外のディレクトリの内容表示方法について質問します。
- CGIがあるディレクトリ以外のディレクトリの内容表示方法について質問します。特に1つ下のディレクトリの内容を表示する方法がわかりません。
- ディレクトリ内にあるファイルの一覧を表示するため、CGIがあるディレクトリ以外のディレクトリの内容表示方法について質問します。特に下のディレクトリ内のファイルを表示する方法が知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
たとえば @files = grep(-f,@dir_value); #ファイルのみを取り出す @files = grep(/\.jpg$/,@files); #拡張子.jpgを取り出す foreach (@files){ #ユーザIDの一致かつ次の文字が-のファイルだけを取り出す 管理者IDの場合はじかない if ($uid="admin"){ push(@list,$_); else if ($_ =~ m/^($uid)\-/) { push(@list,$_); } } @list = sort (@list); #名前をソートする のような感じでいいのでわ?
その他の回答 (2)
- kou2000
- ベストアンサー率29% (14/48)
>opendir(DIR, "./img"); >@dir_value = readdir(DIR); >closedir(DIR); opendir(dir,"img"); と修正してみてください。 一覧は取得できるはずです。 それ以外では、chdir関数を使ってディレクトりを移動してから一覧を表示するようにしてみてください。 )例 chdir('img'); opendir(DIR, '.'); @dir_value = readdir(DIR); closedir(DIR); で出来ます。
補足
すばやい返答ありがとうございます。 無事下位ディレクトリでの表示が出来るようになりました。(chdir('./img'); で解決しました) さらに、問題が1つあるのですが、続けて回答お願いできるでしょうか。 そのディレクトリには画像アップローダーによって画像が保存されています。画像はユーザーID+日付の形で保存されています(0011-031017.jpg、という感じ)。 他人の画像が表示されるのはまずいのでユーザーIDがあるファイルだけ表示するという方法を他の方から教えていただきました。 ----------------------------- @files = grep(-f,@dir_value); #ファイルのみを取り出す @files = grep(/\.jpg$/,@files); #拡張子.jpgを取り出す foreach (@files){ #ユーザIDの一致かつ次の文字が-のファイルだけを取り出す if ($_ =~ m/^($uid)\-/) { push(@list,$_); } } @list = sort (@list); #名前をソートする -------------------------- これはこれでOKなのですが、もう1つ管理者権限ですべてのファイルが表示できるモードを作りたいと思います。 単純に、 foreach (@files){ #ユーザIDの一致かつ次の文字が-のファイルだけを取り出す if ($_ =~ m/^($uid)\-/) { push(@list,$_); } } を削除したら全jpgファイルが見えると考えたのですが、逆に、全部見えなくなってしまいました。 全部のjpgファイルを表示するにはどうしたら良いのでしょうか? 以上よろしくお願いします。
- nana_ko
- ベストアンサー率19% (89/467)
> opendir(DIR, "./img"); えと…おぼろげな記憶ですが"(ダブルクォーテーション)で囲んだものって文字列の扱いになりますよね? 'で囲んだらどうでしょうか? → opendir(DIR, './img');
お礼
返答ありがとうございました。 ばっちり出来ました。 まだまだ勉強が必要でした。