• ベストアンサー

一覧を表示しCGI経由でファイル表示

またまた質問させていただけないでしょうか? 前回回答して頂いた方法でどうにか中盤まで書けました。有難う御座います。 またつっかかっている部分があります。 あるフォルダーにあるファイル名一覧を表示します。 そのファイル名をクリックするとCGI経由でファイル を開くというものなのですが・・・。 どうも上手くいきません。 流れとしては 1.ディレクトリ「master」の中身一覧を取得 2.それを表示 1.一覧の中のあるファイル名をクリック。 2.[CGI]あるファイルを読み込む。 3.あるファイルを表示。

  • Perl
  • 回答数4
  • ありがとう数1

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

  • ベストアンサー
回答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); } # (このスクリプトではエラー処理していません) }

その他の回答 (3)

回答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はわからないのですが、あるソフトに入っているファイルならわかりますので、それは次回に)

fouhttp
質問者

補足

有難う御座います。 え~とファイル名一覧(リンク付)なのですが 直ぐに表示しないで変数に保存しておくという事は できないでしょうか? 表示しちゃう前に少し使いたいのですが・・・。

回答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

  • ディレクトリ内のファイルを一覧表示するCGIを探しています

    指定したディレクトリ内にあるファイルを一覧表示しリンクを自動で作ってくれるCGIを探しています 自分で探してみたところ、いくつか見つけられたのですがなかなか条件にあうCGIが無かったので・・・ ↓こんなの探してます ・携帯でも見れるシンプルなもの ・ファイルの並び順(名前順や最新順)を設定できる  ↑観覧者が自由にソートするのではなくサーバー側(?)で決めれる ・1ページに表示するファイルの数を設定できる ・指定ディレクトリ内にディレクトリがあった場合それもリンク あとできれば画像ファイルを開いたときに「進む」で次のファイルに移動などの機能があればうれしいです どうかよろしくおねがいします・・・

    • 締切済み
    • CGI
  • ファイルの一覧表示

    Win.8.1を使い始めました。しかし、ファイルの一覧表示が遅いのです。フォルダを開いた時に、❛このフォルダは空です❜と表示されたあと、数秒後にフォルダに入ってるファイル名が一覧表示されます。 以前使っていたWin.XPでは瞬時に表示されていたフォルダなので…無駄にファイルの中身を読み込んでいるのが原因かと勝手に推測していますが、何か一覧表示が瞬時に表示できる方法をご存知でした教えてください。 よろしくおねがいします。 ※OKWaveより補足:「富士通FMV」についての質問です。

  • FFFTPのファイル一覧が表示されなくなりました。

    FFFTPを使用していたのですが、突然ファイル一覧が表示されなくなりました。PASVモードを使うをチェックしても、LISTコマンドでファイル一覧を取得をチェックしてもうまくいきません。使えるようにする方法はありませんでしょうか。一様ログにはファイル一覧の取得は正常終了しましたと表示されます。 ローカル側はドライブの表示がされないのでドライブを開くことができません。ホスト側はフォルダ名が/だけ表示します。

  • ファイル名・サイズを一覧表示させるソフトは?

    フォルダ内の、ファイル名と、そのファイルサイズを 一覧表示できるようなソフトを探しています。 フォルダの中身を表示させた画面を印刷したいんです。 あの画面って、印刷できませんよね? ファイル名の一括変換等ができるものはあるようなのですが、サイズも表示できるものとなると、見つからないんです。 できればエクセルなどで使えるよう、csv形式で出力できると助かるのですが・・・。 ご回答、お待ちしております。

  • ファイル一覧を表示しその画面からダウンロードを行いたい

    こんにちは。PHP5を勉強して約半年のものです。PHP5でフォルダ内のファイルを表示し、そこで選択したファイルをダウンロード、または保存用のダイアログを開くプログラムを作成するにはどうすればよいのでしょうか? フォルダ内のファイルの一覧を表示し、<a href>を利用して指定したファイルにアクセスすること、http://opqr.jp/2007/09/php.htmlのサイトなどを参考にクリックしてファイルの保存ダイアログを開いたり、単純な保存の仕方などはできるのですが、質問の通りファイル一覧表示からファイル名をクリックした際、その(クリックした)ファイルをダウンロードするにはどうすればよいのでしょうか?

    • ベストアンサー
    • PHP
  • web上のファイル一覧を見えるようにする

    webアクセスの際、urlでフォルダ名を指定した ときに、ファイル一覧が見えるようにしたいのですが、 いくら.htaccessをいじっても 上手くいきません。どうしたらよいものでしょうか。 よろしくお願いいたします。 【表示されるエラー】 Internal Server Error 【.htaccessの中身】 (cameraのフォルダに入れてあります) <Directory /home/foobar/public_html/camera>   Options +Indexes </Directory> 【ファイル一覧を表示させたいフォルダ】 /home/foobar/public_html/camera 【環境】 Apache-1.3.27を使用しています。 httpd.cnfには、以下の記述を置いてあり、 Optionsに、Indexesがオーバーライドするように しています(しているつもりです)。 # <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> # #

  • バッチファイルでのファイル一覧取得

    初心者です。初めてバッチファイルを作成しようと考えていますが、作成方法がわかりません。 環境はWindwsです。 C:\BディレクトリにAというフォルダがありその中に複数のテキストファイルが保存されています。 そのファイルの一覧をBディレクトリ直下のfile_name.txtへ書き込みたいのですが、dirコマンドでファイルの一覧が取得できるのはわかったのですが、ディレクトリ移動してファイルを書き込む方法がわからず困っています。 更にAフォルダには毎日違うテキストファイルが保存されるため、次回バッチを起動した際にはfile_name.txtの中身をクリアして新規に書き込みをしたいと考えています。 初心者で質問内容に不備があるかもしれませんが、ご教授お願いします。

  • JScriptでファイル一覧

    こんにちは。Windows2000で、HTAを使っての簡単なツールを作っています。 JavaScriptのカテゴリに投稿するのもどうかと思いましたが、JScriptのカテゴリがなかったもので。 さて、あるディレクトリ内にある、ファイルの一覧を、サブディレクトリを含めて全て取得するにはどうしたらいいでしょうか? .GetFileSystemInfosとか使えばいいようですが、いかんせんJScriptは初心者で、具体的な使いかたがわかりません。 ファイル一覧を取得したら、そこから特定のファイル名にマッチしたものだけをコピーしたいと思っています。 ご教授、おねがいします...

  • VB ファイル一覧表示について

    VB初心者です。 現在、指定したフォルダのサブフォルダを含むファイル名一覧を表示したものを作りたいと思い、試行錯誤しております。 ファイル名は、指定したフォルダ以下のパスで表示したものを作りたいと思っているのですが、どうしてもフルパスで表示されてしまいます。 現在、自分が書いているプログラムに拘ろうと思っていませんので、どなたかフルパスではないファイル名一覧表示方法を教えていただけないでしょうか。 環境は、Windows XP 、Microsoft Visual Studio 2008 Express Editionです。 ファイル名一覧表示は、ListViewかListBoxで考えています。 よろしくお願いいたします。

  • 常に[一覧]表示にする方法について

    デスクトップ上のフォルダをダブルクリック後、[表示]→[一覧]とクリックするとフォルダ内のファイルが一覧になって表示されます。一度[一覧]に設定後、デスクトップ上に新規フォルダを作成しそのフォルダにファイルをコピーしたところ、[一覧]に表示されず[並べて表示]になっていました。一度、[一覧]と設定した後も常に[一覧]の表示にする方法を教えてください。

専門家に質問してみよう