ホームHTMLに役立つヒントADSLでMACサーバ・実験室 > macupload.acgi解説

macupload.acgi解説

 web共有で使えるファイルアップロードCGIです。MacPerl用です。【このファイルは2005/10/28日版です。】


■ 目次 ■


特徴 ▲ページトップ

●web共有で使えるファイルアップロードCGIです。

●アップロードできるファイルの種類(拡張子)を指定できる。

●すでに同名ファイルが存在する場合、上書きするかどうか指定可能。

●(一応)管理者パスワードによる認証をしている。

●POSTメソッドでないと許可しない、呼び出し元を限定するといったセキュリティ機能がある。

○WINからはアップできない。

○一度に1ファイルずつしか送れない。


必要なシステム ▲ページトップ

●web共有。サーバソフトです。動作チェックはweb共有ver1.5.1で行っています。

●classic OS 8.1以降が必要です。これはMacPerlがOS 8.1以降を必要としているため。

●MacPerl 5.6.1で動作を確認しています。5.2では動作しません。

●メール送信する場合は田中求之さんのUVJ Mailerが必要です。

●使えるブラウザ

 ブラウザによってエラーが出ます。これは、ブラウザによってmultipart/form-dataの送信方法が異なるためです。いまのところ確認したのは次の通り。

●動作確認できたブラウザ

・Macintosh版ネットスケープ7.02(OS 9)
・Macintosh版IE(OS 9)
・Macintosh版IE(OS X)
・safari 1.3.1(OS X)
・FireFox 1.07(OS X)

●動作しないことが確認できたブラウザ

・Windows版IE (6.x)

 てーことで、なんとMACのブラウザ専用のCGIなのであった(;_;)


ダウンロード ▲ページトップ

macupload.acgi01.txt CGIスクリプトです。クリックしてテキストファイルとしてダウンロードしてください。後でファイル名を変更します。

macupload.html 呼び出しHTMLのひな形です。クリックしてテキストファイルとしてダウンロードしてください。後でファイル名を変更します。次の設定で考えたディレクトリの下に置きます。


設定 ▲ページトップ

●ディレクトリとファイル名

 なにしろこのCGIは好きな場所にファイルをアップロードできてしまいます。セキュリティには十分気をつけてください。

 他の人に使われないように、類推しにくいディレクトリ名をつけて、その中に呼び出しhtml名(デフォルトではmacupload.html)、ACGI名(デフォルトではmacupload.acgi.txt)を入れるといいでしょう。

 あくまで例ですが、「kichijyouji」とか「mataka」とか「chuuousen」とか、わけわかんない名前の方がいいです。

 同様に、念には念を入れてmacupload.htmlの名前も変更してください。

 例:chuuousen/kichijyouji.html

 なお、このディレクトリ(フォルダ)はwebのルートディレクトリ直下である必要があります。

●macupload.acgi.txtの設定

 次の赤い部分を変更します。

# ====================================================
#  変数の設定
# ====================================================
$passwd = "0123"; # 管理者パスワード。必ず変更すること。

$callurl = "http://xxxx.com/macupload/macupload.html"; # このCGIを呼び出すhtmlのurl

※このURL以外から呼び出すことはできません。

$homeurl = "macupload.html"; # 終了後の戻り先。

# 許可する拡張子を半角スペースで区切る。「.」を忘れずに。
$suffix = ".jpg .jpeg .gif .png .html .htm .shtml .txt";

※.cgiや.acgiは指定しない方が無難です。

$maxkirobyte = "100"; # アップできる最大ファイル容量。100kbなら100と記述

# メール送信するならUVJ Mailerに登録してあるニックネームを書く。
# 空にすると送信しない。
# また、UVJ Mailerはあらかじめ立ち上がっている必要がある。
$mailto = "ニックネーム" ;

# メール送信するときの発信元メールアドレス。送信しないなら空でOK。
$frommail = "name\@xxxx.ne.jp";

# ログファイルの名前。空なら出力しない。
$logfile = "upload.log";

※メール送信やログ出力は、知らない間に勝手に使われていた、なんてことがないように、お知らせしたり(メール)、記録を取ったり(ログ)するものです。できれば両方設定しておいてください。

●macupload.htmlの変更

 次の赤い部分を変更します。

<form action="macupload.acgi" method="post" enctype="multipart/form-data">

 htmlのレイアウトなどを変更する場合は、入力の順番に注意してください。必ずアップするファイルは最期になるようにします。前述のようにブラウザによってmultipart/form-dataの送信形式が異なりますが、その違いを吸収するのにこの順番が大事だからです。

 保存先をリストから選択する場合や、固定にして隠しておく場合など、サンプルが入っています(コメント化して隠してあります)ので、それを参考にしてください。


ファイルの保存 ▲ページトップ

●ディレクトリの作成

 ルートディレクトリ(webページのトップディレクトリ)に上で説明した専用のディレクトリを作成します。(例:chuuousen)

 目隠しのために、空っぽでよいので、index.htmlをこのディレクトリに置いておくといいでしょう。

●htmlの保存

 上で作ったディレクトリにhtmlファイルを移動します。このファイルには、絶対に他のファイルからリンクを張ってはいけません

 htmlの名前も変更して下さい。(例:kichijyouji.html)

●acgiの保存と移動。

 xxxx.acgi.txtをMacPerlで開き、CGI Scriptとして保存します。メモリの割り当ては1000kb位でいいでしょう。それを専用ディレクトリに入れます。名前は変更してもいいですが、そのままでもかまいません。


UVJ Mailerについて ▲ページトップ

 メール送信には田中求之さんのUVJ Mailerを使っています。

 デフォルトでは「UVJ Mailer 3.1 PPC」となっています。異なるバージョンをお使いの場合は、CGIの次の箇所を変更してください。

tell application "UVJ Mailer 3.1 PPC"

 また、CGIが呼び出す以前に、UVJ Mailerが立ち上がっている必要があります。自動的には立ち上がりませんのでご注意下さい。


変更履歴 ▲ページトップ

ver0.1 2005/10/25 最初のバージョン。たぶん最期でしょう。このバージョンはCGI.pmを使ってますが、cgi-lib.plを使ってみてもやっぱりwin版IEからではエラーが出てしまう。なんだろうな〜。ひょっとして、web共有がデータを正しく受け取れていないとかいう落ちだったら悲惨。


著作権など ▲ページトップ

 フリーウェアです。私用・商用を問わず自由に使えます。改造や改造品の再配布も御自由にどうぞ。

 ただし、このスクリプトを使用して被ったいかなる損害も補償されません。

 もし、Windowsからもアップできるようにできたらぜひ、ぜひぜひ、教えてください<(_ _)>


ホームHTMLに役立つヒントADSLでMACサーバ・実験室 > macupload.acgi解説