ホーム > HTMLに役立つヒント
> ADSLでMACサーバ・実験室 > macupload.acgi解説
web共有で使えるファイルアップロードCGIです。MacPerl用です。【このファイルは2006/4/8日版です。】
●web共有で使えるファイルアップロードCGIです。
●アップロードできるファイルの種類(拡張子)を指定できる。
●すでに同名ファイルが存在する場合、上書きするかどうか指定可能。
●(一応)管理者パスワードによる認証をしている。
●POSTメソッドでないと許可しない、呼び出し元を限定するといったセキュリティ機能がある。
○一度に1ファイルずつしか送れない。
○アップロードできるファイルの大きさは24kbまで(web共有の限界らしい)。大きなファイルをアップしたい場合は「fileget.acgi」を使って下さい。
●サーバソフト。動作チェックはweb共有ver1.5.1で行っています。MacHTTP2.6でも動作するとのご報告をいただきました。QPQでは動作しません。
●classic OS 8.1以降が必要です。これはMacPerlがOS 8.1以降を必要としているため。
●MacPerl 5.6.1で動作を確認しています。5.2では動作しません。
●メール送信する場合は田中求之さんのUVJ Mailerが必要です。
●macupload.acgi012.txt CGIスクリプトです。クリックしてテキストファイルとしてダウンロードしてください。後でファイル名を変更します。
(旧バージョンの解説はこちら)
●macupload.html 呼び出しHTMLのひな形です。クリックしてテキストファイルとしてダウンロードしてください。後でファイル名を変更します。次の設定で考えたディレクトリの下に置きます。
●ディレクトリとファイル名
なにしろこのCGIは好きな場所にファイルをアップロードできてしまいます。セキュリティには十分気をつけてください。
他の人に使われないように、類推しにくいディレクトリ名をつけて、その中に呼び出しhtml名(デフォルトではmacupload.html)、ACGI名(デフォルトではmacupload.acgi)を入れるといいでしょう。
あくまで例ですが、「kichijyouji」とか「mataka」とか「chuuousen」とか、わけわかんない名前の方がいいです。
同様に、念には念を入れてmacupload.htmlの名前も変更してください。
例:chuuousen/kichijyouji.html
なお、このディレクトリ(フォルダ)はwebのルートディレクトリ直下である必要があります。
●macupload.acgi.txtの設定
EUC/CRとして保存してください。
次の赤い部分を変更します。
# ====================================================
# 変数の設定
# ====================================================
$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と記述
※デフォルトで100kbになっていますが、実際には24kbまでしかアップできません。web共有の限界らしいです。
# メール送信するならUVJ Mailerに登録してあるニックネームを書く。
# 空にすると送信しない。
# また、UVJ Mailerはあらかじめ立ち上がっている必要がある。
$mailto = "ニックネーム" ;# メール送信するときの発信元メールアドレス。送信しないなら空でOK。
$frommail = "name\@xxxx.ne.jp";# ログファイルの名前。空なら出力しない。
$logfile = "upload.log";※メール送信やログ出力は、知らない間に勝手に使われていた、なんてことがないように、お知らせしたり(メール)、記録を取ったり(ログ)するものです。できれば両方設定しておいてください。
●macupload.htmlの変更
EUC/CRで保存してください。
次の赤い部分を変更します。
<form action="macupload.acgi" method="post" enctype="multipart/form-data">
保存先をリストから選択する場合や、固定にして隠しておく場合など、サンプルが入っています(コメント化して隠してあります)ので、それを参考にしてください。
●ディレクトリの作成
ルートディレクトリ(webページのトップディレクトリ)に上で説明した専用のディレクトリを作成します。(例:chuuousen)
目隠しのために、空っぽでよいので、index.htmlをこのディレクトリに置いておくといいでしょう。
●htmlの保存
上で作ったディレクトリにhtmlファイルを移動します。このファイルには、絶対に他のファイルからリンクを張ってはいけません。
htmlの名前も変更して下さい。(例:kichijyouji.html)
●acgiの保存と移動。
xxxx.acgi.txtをMacPerlで開き、CGI Scriptとして保存します。メモリの割り当ては1000kb位でいいでしょう。それを専用ディレクトリに入れます。名前は変更してもいいですが、そのままでもかまいません。
メール送信には田中求之さんのUVJ Mailerを使っています。
デフォルトでは「UVJ Mailer 3.1 PPC」となっています。異なるバージョンをお使いの場合は、CGIの次の箇所を変更してください。
tell application "UVJ Mailer 3.1 PPC"
また、CGIが呼び出す以前に、UVJ Mailerが立ち上がっている必要があります。自動的には立ち上がりませんのでご注意下さい。
ver0.12 2005/11/1
・Windowsからもアップロードできる。なんのことはない、CGI.pmの使い方が悪かっただけ。
・ログ出力が上書きモードになっていたバグを修正。出力内容の順番を変更。
・このバージョンからEUCに変更した。
ver0.1 2005/10/25 最初のバージョン。たぶん最期でしょう。このバージョンはCGI.pmを使ってますが、cgi-lib.plを使ってみてもやっぱりwin版IEからではエラーが出てしまう。なんだろうな〜。ひょっとして、web共有がデータを正しく受け取れていないとかいう落ちだったら悲惨。
フリーウェアです。私用・商用を問わず自由に使えます。改造や改造品の再配布も御自由にどうぞ。
ただし、このスクリプトを使用して被ったいかなる損害も補償されません。
ホーム > HTMLに役立つヒント
> ADSLでMACサーバ・実験室 > macupload.acgi解説