電子書籍の厳選無料作品が豊富!

ファイルをアップロードするCGI等をよく見かけるのですが、
あれはどのようにして実現してるのでしょうか?

A 回答 (2件)

楽なのは、CGIというモジュールを使ってやる方法です。

恐らく標準で入ってるはずです。普通にサーバーに設置しても使えました。
ここでは、
<form action="CGIアドレス" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="アップロード">
</form>
というHTMLタグでデータを送った場合を仮定します。
ちなみに、formタグの、[enctype="multipart/form-data]がないと、正常に動きません。これはどのスクリプトにおいても必須の条件のはずです。

use CGI;#CGIモジュールの使用
$query = new CGI;
$file =$query->param('file');#デコード。勝手にしてくれます。
#$変数 = $query->param(フォームの名前);が基本ルールです。

$newfile=$file;#ファイル名。別に$fileを使う必要なし

open(FILE, ">$newfile") || die "error";
binmode(FILE);#アスキー以外のバイナリデータの場合必要
binmode(STDOUT);#アスキー以外のバイナリデータの場合必要
while (<$file>) {print FILE $_;}
close(FILE);

これが一番手軽かと。デコードも完璧にモジュールがしてくれます。
ただ、テキストファイルは正常にできない場合もあります。テキストの場合は、ファイルをバイナリモードで開く、binmodeの二行を削除すればいけます。(逆に画像などはこれが必須です。)
ちなみに、自分のパソコンの仮想サーバーで実行すると、CGI何ちゃら~っというアップロードしたファイルと同じものが、どこかに作成されますが、それは一時ファイルですので、削除すればいいと思います。
    • good
    • 0

そういうときは


「Perl CGI ファイル アップロード」
というキーワードで検索するとよいですよ。

ここの回答にまとめられるほど簡単な話じゃないですし、よくまとまったサイトはたくさんありますのでそちらを参考にしてください。

この回答への補足

ありがとうございます。
とりあえずYahoo,google等で検索してみると、
コード等を載せているサイトは結構ありましたが、
どれも動かなかったり正常に動作しなかったりして
有力な情報が手に入らない状態です。
解説しているサイトなどあれば紹介して頂きたいです。

補足日時:2007/03/29 16:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!