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

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を使っています。

 デフォルトでは「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解説