ホーム > HTMLに役立つヒント
> ADSLでMACサーバ・実験室 > 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 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解説