フォルダの画像を一覧したい

[上に] [前に] [次に]
タック [E-Mail] 1999/12/14(火) 12:46:20
質問させてください。サーバーの特定のフォルダにある画像(*.jpg)を単純に、適当なサイズで一覧できるようなCGIとかはあるものでしょうか。

白板剃毛 1999/12/14(火) 13:13:14
そのフォルダ内にある、「index.html(またはindex.htm)」を削除してください。

http://xxxxxxxxx/そのフォルダ/

と指定すれば、CGI使わなくても一覧が表示されまっせ(サイズも)。

タック 1999/12/14(火) 13:17:48
現在使用中のサーバーでは、その方法だと、ファイル名一覧しか見えないのですが。

[E-Mail] [HomePage] 1999/12/14(火) 13:33:33
縮小画像が必要なのですね。perl でもフォルダの中のファイル名
一覧を取得できるようですので、
http://www.tohoho-web.com/wwwperl2.htm#readdir
ファイル名を取得後、
<img src="$filename" width=10 height=10>
という感じに小さなサイズを指定してやると、縮小して表示されます。
あとは、その隣にサイズとか書いていけばいいのじゃないでしょうか。

ASP でも同様にできます。

剃毛切開 1999/12/14(火) 13:37:22
じゃぁ、こんなもんで

#!/usr/local/bin/perl

$dir = '/usr/local/etc/httpd/htdocs/imt/image/*.jpg'; # 対象ディレクトリ・ファイル名
####################
print "Content-type: text/html;CHARSET=x-sjis\n\n";
open(IN, "/usr/local/bin/ls -l $dir |");
while (<IN>) {
    print "$_<BR>\n";
}
close(IN);

exit:

タック 1999/12/14(火) 14:07:14
ありがとうございます。剃毛切開さんのスクリプトのimt/image/*.jpgを実際の画像のある場所に変更してやってみましたが、白い画面があらわれるだけの状態です。ほとんとスクリプトの意味はわかっていないレベルですが、指導していただけますか。

剃毛切開 1999/12/14(火) 14:10:39
じゃぁ、こんなもんで

#!/usr/local/bin/perl

$dir = '/usr/local/etc/httpd/htdocs/imt/image/*.jpg'; # 対象ディレクトリ・ファイル名
####################
print "Content-type: text/html;CHARSET=x-sjis\n\n";
open(IN, "/usr/local/bin/ls -l $dir |");
while (<IN>) {
    print "$_<BR>\n";
}
close(IN);

exit:

剃毛切開 1999/12/14(火) 14:18:20
上の発言、まちがってリロード押してしまいました。失礼しました。

さて、
$dir = '/usr/local/etc/httpd/htdocs/imt/image/*.jpg'; # 対象ディレクトリ・ファイル名

は、URLではなく、実際のサーバー上のディレクトリ名です。
サーバーによって、ディレクトリの設定は異なるので、単にimt/image…の部分だけ変更してもうまく行かないかもしれません。


CGIのURLが http://xxxxxxxx/cgi-bin/hogehoge.cgi だとして、

CGIが入っているディレクトリを表示するときは
$dir = '.'; # そのディレクトリ

http://xxxxxxxx/を表示するときには
$dir = '..'; # ひとつ上の階層のディレクトリ

http://xxxxxxxx/gehogeho/を試験するときは
$dir = '../gehogeho';

とすればいいと思います。

ちなみに、このスクリプトはUNIXの「ls」命令を実行しているだけです。

タック 1999/12/14(火) 14:46:01
すみません。ど素人なので、画像表示の部分も含めたスクリプトも含めて教えてもらわないとわからない状態です。「ls」のこともわかりません・・・。

剃毛切開 1999/12/14(火) 14:52:58
lsとは、「ディレクトリに入っているファイル名(その他)を出力する」という命令です。
実行されれば分かると思いますが、味も素っ気もないファイル名一覧が出力されます。

剃毛切開 1999/12/14(火) 15:00:30
でもって、先ほどのスクリプトでは「画像表示」ということはやっておりません。ただ単に、ファイル名一覧を出力しているだけです。

とうわけで、縮小画像とともに、ファイル名、サイズを表示するスクリプトを作ってみました

#!/usr/local/bin/perl

$width_height = 'WIDTH=40 HEIGHT=20'; # 画像一覧のサイズ
$dir = '../imt/image';                # 対象ディレクトリ(CGIを設置するディレクトリから見た位置を指定する
####################
print "Content-type: text/html;CHARSET=x-sjis\n\n";
print "$dir の jpg一覧<P>\n";
print "<TABLE BORDER>\n";
print "<TR><TH>イメージ<TH>ファイル名<TH>サイズ(k)\n";
opendir(DIR, "$dir");
while ($_ = readdir(DIR)) {
if (substr($_,-4,4) eq "\.jpg")  { # jpgだけ出力
   ($size) = (stat("$dir/$_"))[7];  # ファイルサイズ所得
   print "<TR>";
   print "<TD><A HREF=\"$dir/$_\" TARGET=\"jpg\"><IMG SRC=\"$dir/$_\" $width_height>"; # 画像(リンクあり)
   print "<TD><A HREF=\"$dir/$_\" TARGET=\"jpg\">$_</A>"; # ファイル名(リンクあり)
   print "<TD ALIGN=RIGHT>$size\n"; # サイズ
}
}
closedir(DIR);
print "</TABLE>\n";

exit:

ふじ 1999/12/14(火) 16:23:34
参考になるかどうか分かりませんが、自分用に作った、
ディレクトリ内の画像一覧(+縮小画像表示)CGIスクリプトを
http://www.aleph.co.jp/~fujiwara/perl/img_index.pl
にあげておきます。

ただし、とりあえず自分の環境で動けば良いという代物なので、
Perl5 専用で、Image::Size モジュールが入ってないと動きません(^^;
ついでに、Windows環境でのテストもしてません(^^;;

GIFとJPEGの画像サイズを返す自作のスクリプトは
http://www.aleph.co.jp/~fujiwara/perl/get_imgsize.pl
これですので(PNG非対応)、これと組み合わせれば Image::Size
モジュールがなくても動かせるかも・・・

タック 1999/12/14(火) 16:59:26
皆様ありがとうございます。とりあえず剃毛切開さんので実験したところ、おかげさまで、ファイル、容量は無事表示されました。ただ、イメージがバッテンマークでうまく表示されてない状態です。ディレクトリの設定がまずいのでしょうか。

剃毛切開 1999/12/14(火) 17:10:44
>イメージがバッテンマークでうまく表示されてない状態

イメージ、もしくはファイル名をクリックすると別ウィンドウにそのイメージを表示するようにしています。
もし、それで「File not found」になるようだったら、ディレクトリ指定の誤りです。

#しかし、オレのハンドルネームって下品だな・・・。

[E-Mail] [HomePage] 1999/12/14(火) 18:16:48
横からすみません。

>    print "<TD><A HREF=\"$dir/$_\" TARGET=\"jpg\"><IMG SRC=\"$dir/$_\" $width_height>"; # 画像(リンクあり)

↑</A> を追加しましょう。

剃毛切開 1999/12/14(火) 18:27:20
>↑</A> を追加しましょう。

ご指摘ありがとうございます。

タック 1999/12/14(火) 19:47:54
剃毛切開様、cgi-binの中にフォルダ「100027」を作成してやってみましたが($dir = './100027';)うまく画像が表示されません。それと、目的は、画像を一覧したいのですが、どのようにしたらいいでしょうか。

剃毛切開 1999/12/14(火) 23:39:17
画像のところに、カーソルを持っていくとタスクバーにURLが表示されるはずですが、そのURLは正しいでしょうか?(つまり、存在するURLでしょうか?)

[E-Mail] [HomePage] 1999/12/14(火) 23:43:39
その 100027 は読込許可になっていますか?
FTP クライアントでみると、100027 の横に
dxwr--r--r とか書いてあると思いますが、どうなっていますか?

タック 1999/12/15(水) 04:48:53
剃毛切開様、イメージを指しても、ファイル名を指しても、10002720.jpg(100027の中のファイル名)へのショートカットと表示されます。
S様、パーミッションは777にしてあります。

剃毛切開 1999/12/15(水) 09:00:24
>10002720.jpg(100027の中のファイル名)へのショートカット

って、どういうことだろう?
普通だったら、「http://xxxxxxxxx/cgi-bin/100027/10002720.jpg」とだけ表示されるはずだけど?

でもって、そこをクリックしたときに、ちゃんと別ウインドウにその画像が表示されるのでしょうか?(1999/12/14(火) 17:10:44
の再質問)

#そろそろ、チャット状態にピリオドを打ちましょう

タック 1999/12/15(水) 09:12:17
[[解決]]
おさがわせしました。無事画像も表示されました。
cgi-binの中の100027フォルダはパーミッションを777にしたもののcgi-bin自体が参照許可されていないだけでした。それで、他の場所に移したら無事OKでした。お手数をおかけしてしまいました。
目的達成で、作業に便利になります。感謝!

[上に] [前に] [次に]