ホーム > HTMLに役立つヒント
> ADSLでMACサーバ・実験室 > fileget.acgi解説
外にあるwebサーバからファイルを任意の場所にダウンロードするためのCGI。web共有ではファイルのアップロードがなかなかうまくいかないので、いったん外のサーバ(たとえば無料のホームページ領域を提供しているところや無料blog)にアップして、そのファイルを自宅Macサーバにとってくる、という仕組み。
●このCGIの前提としている使い方。
下のような順番で、いったんファイルを外のwebサーバにアップロードし、そのファイルをCGIでMacのweb共有サーバに取ってきます。

外のwebサーバというワンクッションが必要。 外のwebサーバは、無料で使えるホームページスペース(ADSLなどの契約にはよく無料スペースがついてくる。たとえばgeocities)、無料blog(Yahoo/goo/googleのBlogger/Exciteなど)でよい。
でも、無料ホームページには画像置き場にするなとか規約がありますから、利用規約違反にならないようにご注意。
無料ホームページならFTPをサポートしているので、.htmlや.css、.jsなどのファイルをアップ/転送できます。blogではFTPをサポートしていないことが多いようですので、任意のファイルをアップできません。したがって、blogを利用した場合は無料ホームページよりも転送できるファイルの種類が少なくなるでしょう。実質、blogスペースを利用した場合は、画像ファイルのみと考えた方がいいと思います。
●web共有で使えるファイル転送CGIです。
●ファイル転送できるファイルの種類(拡張子)を指定できる。
●すでに同名ファイルが存在する場合、上書きするかどうか指定可能。
●(一応)管理者名/パスワードによる認証をしている。
●POSTメソッドでないと許可しない。
○外にwebサーバが必要である。
●web共有。サーバソフトです。動作チェックはweb共有ver1.5.1で行っています。
●classic OS 8.1以降が必要です。これはMacPerlがOS 8.1以降を必要としているため。
●MacPerl 5.2r4/5.6.1r2で動作を確認しています。
●メール送信する場合は田中求之さんのUVJ Mailerが必要です。
●fileget.acgi012.txt CGIスクリプトです。クリックしてテキストファイルとしてダウンロードしてください。後でファイル名を変更します。
●CGIファイル名
セキュリティには十分気をつけてください。
他の人に使われないように、類推しにくいCGI名をつけてください。あくまで例ですが、「kichijyouji.acgi」とか「mataka.acgi」とか「chuuousen.acgi」とか、わけわかんない名前の方がいいです。
なお、このCGIはwebのルートディレクトリ直下である必要があります。
●file_get_ftp.acgi.txtの設定
EUC/CRで編集します。
次の赤い部分を変更します。
# ====================================================
# 変数の設定
# ====================================================
# 管理者の設定
$adminname = "admin"; # 管理者名。必ず変更すること。
$passwd = "0123"; # 管理者パスワード。必ず変更すること。$cginame = "fileget.acgi"; # このCGIの名前。必ず変更すること。
# ダウンロードを許可するファイルの拡張子を半角スペースで区切って指定
# .txtや.htmlも必要に応じて追加できる。「.」を忘れずに。
$suffix = ".jpg .jpeg .gif .png .html .htm .shtml .txt .js .css .cgi .acgi";# メール送信するならUVJ Mailerに登録してあるニックネームを書く。
# 空にすると送信しない。
# また、UVJ Mailerはあらかじめ立ち上がっている必要がある。
$mailto = "ニックネーム" ;# メール送信するときの発信元メールアドレス。送信しないなら空でOK。
$frommail = "name\@xxxx.ne.jp";# ログファイルの名前。空なら出力しない。
$logfile = "fileget.log";※メール送信やログ出力は、知らない間に勝手に使われていた、なんてことがないように、お知らせしたり(メール)、記録を取ったり(ログ)するものです。少なくともログは取っておきましょう。
●acgiの保存と移動。
xxxx.acgi.txtをMacPerlで開き、CGI Scriptとして保存します。メモリの割り当ては1000kb位でいいでしょう。それをwebのルートディレクトリにおきます。くどいですが、名前は変更して下さい。
●アクセスする
後は設置したCGIにブラウザでアクセスして下さい。こちらに操作画面の見本をおきます。
メール送信には田中求之さんのUVJ Mailerを使っています。
デフォルトでは「UVJ Mailer 3.1 PPC」となっています。異なるバージョンをお使いの場合は、CGIの次の箇所を変更してください。
tell application "UVJ Mailer 3.1 PPC"
また、CGIが呼び出す以前に、UVJ Mailerが立ち上がっている必要があります。自動的には立ち上がりませんのでご注意下さい。
ver0.12 2005/11/5
- 取得URL欄が空かどうかチェックを追加。
- ファイルを取得できなかった場合、正常に取得できたように表示されるバグを修正。
ver0.11 2005/11/3
- メール送信で無意味な内容(ファイルのタイプ)が送信されるバグを修正。
ver0.1 2005/11/2
- 最初のバージョン。元はやはり自作のCGIで、そちらは転送プロトコルにFTPを用いている。しかし、FTPプロトコルの場合、必ずFTPサーバが外に必要になるため、より簡便に使えるようにHTTPプロトコルに書き直したのがこれ。
- クッキーを登載したいですが、未実装です。
- 実は検証があんまりできてません。実際に確認したのは.jpgファイルだけ(^_^;
フリーウェアです。私用・商用を問わず自由に使えます。改造や改造品の再配布も御自由にどうぞ。
ただし、このスクリプトを使用して被ったいかなる損害も補償されません。
ホーム > HTMLに役立つヒント
> ADSLでMACサーバ・実験室 > fileget.acgi解説