またまた質問させていただけないでしょうか?
前回回答して頂いた方法でどうにか中盤まで書けました。有難う御座います。
またつっかかっている部分があります。
あるフォルダーにあるファイル名一覧を表示します。
そのファイル名をクリックするとCGI経由でファイル
を開くというものなのですが・・・。
どうも上手くいきません。
流れとしては
1.ディレクトリ「master」の中身一覧を取得
2.それを表示
1.一覧の中のあるファイル名をクリック。
2.[CGI]あるファイルを読み込む。
3.あるファイルを表示。
No.2ベストアンサー
- 回答日時:
#1のそれぞれの説明です。
#自分自身のCGIの名前を設定(自動設定することも可能)
$THIS="test.cgi";
#とりあえずファイル名を取得(本来ならもっとちゃんとしたデコーダーを使うといいでしょう)
$filename=$ENV{QUERY_STRING};
# ファイルのmime/type をとりあえず指定する。他のタイプも指定する必要がある。
$mime{html}="text/html";
$mime{htm}="text/html";
$mime{txt}="text/plain";
$mime{jpg}="image/jpeg";
# ファイル名が指定されていなければ
if($filename eq '') {
# ファイル一覧をHTML形式で表示
print "Content-type: text/html\n\n";
print "<html><body>\n";
# ディレクトリを開く、"." を"master"にかえるといいでしょう。
opendir(DIR,".");
# ディレクトリの取得のループ
while($dir=readdir(DIR)) {
# 実際には、ここでディレクトリかどうか?という判断もすべきです。
# ファイル名へのリンク
print "<a href=\"$THIS?$dir\">$dir</a><br>\n";
}
# ディレクトリを閉じて終了
closedir(DIR);
print "</body></html>\n";
# ファイル名が指定されていなければ
} else {
#拡張子を取り出す
$ext=$filename;
$ext=~s/.*\.//g;
# 拡張子が$mimeに設定されてれば表示
if($mime{$ext} ne '') {
# Content-type: (mime/type)のヘッダを出力
print "Content-type: $mime{$ext}\n\n";
# ファイルの中身をそのままそっくり出力
open(R,$filename);
print <R>;
close(R);
}
# (このスクリプトではエラー処理していません)
}
No.4
- 回答日時:
#3
配列にpushすることでできます。
opendir(DIR,".");
while($dir=readdir(DIR)) {
# 実際には、ここでディレクトリかどうか?という判断もすべきです。
push(@FILENAMES,$dir);
}
#ここまで、以下サンプル
foreach $file(@FILENAMES) {
if($file=~/^a/) {
$count{a}++;
}
if($file=~/^b/) {
$count{b}++;
}
}
print "aで始まるファイルの数は$count{a}個ありました\n";
No.3
- 回答日時:
#1,#2と、とりあえず動くサンプルを提示しましたが
これはもちろんサンプルであるが故、ディレクトリに対する対処、セキュリティーやエラー処理が全くされていません。
まず、この動くサンプルを理解できてから、次のステップに進むことになると思います。
また、ファイル拡張子に対するmime/typesもどこかからファイルから自動取得したいとかも考えてもみたくありませんでしょうか?
案外、こういうのがダウンロードできたりします。(生のmime-typesはわからないのですが、あるソフトに入っているファイルならわかりますので、それは次回に)
この回答への補足
有難う御座います。
え~とファイル名一覧(リンク付)なのですが
直ぐに表示しないで変数に保存しておくという事は
できないでしょうか?
表示しちゃう前に少し使いたいのですが・・・。
No.1
- 回答日時:
1~3どれもできないのでしょうか?汗
2分でこのフローをとりあえず動かせるものを作ってみたのでまずお試しを・・・
#html,htm,txt,jpgしか表示できません
#masterの中身ではなく、カレントディレクトリの表示
#ファイル名はtest.cgi
#!/usr/bin/perl
$THIS="test.cgi";
$filename=$ENV{QUERY_STRING};
$mime{html}="text/html";
$mime{htm}="text/html";
$mime{txt}="text/plain";
$mime{jpg}="image/jpeg";
if($filename eq '') {
print "Content-type: text/html\n\n";
print "<html><body>\n";
opendir(DIR,".");
while($dir=readdir(DIR)) {
print "<a href=\"$THIS?$dir\">$dir</a><br>\n";
}
closedir(DIR);
print "</body></html>\n";
} else {
$ext=$filename;
$ext=~s/.*\.//g;
if($mime{$ext} ne '') {
print "Content-type: $mime{$ext}\n\n";
open(R,$filename);
print <R>;
close(R);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- その他(IT・Webサービス) サイト上のフォルダ階層一覧、ファイル一覧を閲覧する方法は? 1 2022/11/11 15:49
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- Excel(エクセル) エクセルのファイルにリンクを貼る方法 4 2023/06/30 11:09
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FindFirstFileとFindNextFileで...
-
C言語でファイル名を取得
-
エラー 'dir.h' : No such fi...
-
batファイルでrenameができませ...
-
Net::FTPを使いファイル一覧の...
-
VBAでCSVファイルを途中行まで...
-
C言語の問題について
-
バッチファイルの作り方(CSV→...
-
openした後、closeしないでプロ...
-
csvファイルの横方向への改行に...
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルの特定行を書...
-
JSP URLに表示される拡張子 .jsp
-
close()で例外が投げられる理由
-
python renameについて
-
MATLABのm-fileについて
-
ListBoxのデータを高速でファイ...
-
cgiの投票回数制限設定について...
-
Perlで特定行から特定行までを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
FindFirstFileとFindNextFileで...
-
ディレクトリの判別
-
Windowsで複数のファイルを同じ...
-
vba dir の相対パス
-
パスから最後のディレクトリだ...
-
chdirがうまくできない
-
dos変数の%~dp0は powershellで...
-
テキストファイルの結合
-
Perlで フォルダ内の全て...
-
readdir()で得られるファイル・...
-
makefileでファイルをコピー(...
-
サーバーにある特定の拡張子フ...
-
ディレクトリツリーの表示
-
C言語でファイル名を取得
-
ファイル名と更新日付の取得に...
-
複数ファイルの読み込みについて
-
LinuxのC言語で、ファイル名の...
-
Director拡張子
-
ディレクトリ名を取得したい
おすすめ情報