新規記事投稿
フォロー記事投稿
記事のキャンセル
From: にあ
<nir@mxa.meshnet.or.jp>
Subject: Re: サーバへのファイルのアップロード
Date: 1997/03/17 21:13:38
Reference: mesh.program/00233
# さて、汚名返上と言うことで。(^^;;
3月17日に、いぇ〜い!さんは書きました。
>CGIを使って、でクライアント側にあるファイル(私はGIF、JPGファイルを考えてます
>が)を、サーバ側にアップロードする事はできるんでしょうか?
>
これはブラウザ依存 (と言うより、HTML3.2に取り入れられたので、HTML3.2準拠の
ブラウザならと言うことになるのでしょうが) なのですが、<FORM ...> の構文で
ファイルの内容を送る事が出来ます。
例えば、
<FORM ACTION="cgi-script.cgi" ENCTYPE="multipart/form-data" METHOD="POST">
送信するファイル: <INPUT TYPE="file" NAME="TestFile">
<INPUT TYPE="hidden" NAME="test" VALUE="abc"><BR>
<INPUT TYPE="submit">
</FORM>
と言うようなフォームでファイルを送信すると、cgi-script.cgi には、
CONTENT_TYPE = 'multipart/form-data; boundary=---------------------------26289989620002'
と言うような CONTENT_TYPE が渡され、標準入力にはフォームの内容がマルチパートで
入ってきます。(もちろん boundary の値はその時々で異なります)
例えばこの様な感じになります。
-----------------------------26289989620002
Content-Disposition: form-data; name="TestFile"; filename="ローカルでのファイル名"
ファイルの
内容が
入る...
-----------------------------26289989620002
Content-Disposition: form-data; name="test"
abc
-----------------------------26289989620002--
と言う具合ですね。
渡されたマルチパートのデータはCGIで処理しなければなりませんが、汎用のCGIライブラリの
中には、既にこの様なファイルアップロードによるマルチパートを処理できるものも多い様です。