このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

Form Tag でファイル転送を

発言者:yossan
( Date Wednesday, March 06, 1996 18:11:41 )


Form Tagを使ってファイル転送にチャレンジしていますが,
うまくいきません.
MIME-Typeでmultipart/form-dataを使えばよいらしいけれど,
細かいことがわかりません.
誰か,知恵をおかしください.

よろしくお願いいたします.

田中求之 さんからのコメント
( Wednesday, March 06, 1996 21:44:02 )

>Form Tagを使ってファイル転送にチャレンジしていますが,
>うまくいきません.

Netscape のホームページの Extensions to HTML 3.0 のページをチェックして
もらえば、FORM の書き方は載っています。ちなみに、以下のようになります。

<FORM ENCTYPE="multipart/form-data" ACTION="receive.acgi" METHOD=POST> 
Send this file: <INPUT NAME="userfile" TYPE="file"> 
<INPUT TYPE="submit" VALUE="Send File"> 
</FORM> 

ファイルを選び、Send File をクリックすると、ファイルのデータが POST_args
として丸ごと送られます。

問題は、というか面倒なのは、受け取った CGI 側での処理です。タグで指定する
ように、マルチ・パート形式のデータで送られてきますので( URL エンコードは
されないようですが)、それをうまく切り分けた上でセーブする必要があります。

田中求之 さんからのコメント
( Wednesday, March 06, 1996 21:53:24 )

(続き)

つまり、見かけはファイル転送のように見えますが、実際は、指定したファイルの
データを multipart の MIME で一つにまとめたものが送られるわけですので、
post_args のデータをバウンダリーごとに切り放して、ファイルにセーブする
処理を CGI が行わなければならないのです(もっとも、この処理は、スクリプト
がある程度書ける方なら、さほど問題はないと思いますが、バイナリデータを処理
するのは、ちょっと面倒ですよ)。

むしろ、問題は、現在の MacHTTP あるいは WebSTAR の CGI を使う限り、
データ(ファイルのデータ)のサイズが24Kまでに制限されてしまうという
ことです。このため、画像ファイルなどの転送には使えませんし、テキスト
ファイルですら、ちょっと大きいとすぐにリミットに引っかかるわけです。
(ヘッダー等も含めて24Kです)

アップロードする側に対して、選択したファイルのサイズを気を付けろとか、
20K以下のファイルにしろといった注文を付けるのは不便でしょう。ですから
はっきりいうと、現状ではあまり使いものになりません。

また、当然の事ながら、バイナリのアプリケーションを転送し、それを実行されて
しまうという危険も生じるわけで、セキュリティの問題も生じます。

以上の2点は注意する必要があります。

参考になれば幸いです。

yossan さんからのコメント
( Thursday, March 07, 1996 12:25:59 )

早速のお返事ありがとうございます。
一度ためして見たいと思います。

しかし、24Kはちょっと少なすぎますね......

田中求之 さんからのコメント
( Friday, March 08, 1996 15:06:02 )

WebSTAR 2.0 では File Upload に対応するようですので、おそらく
サイズの制限などはなくなると思われます。

本格的な利用はそれからでしょうね。

ただ、いずれにせよ、セキュリティの問題が生じますので、注意しなければ
なりませんね。

NetPresenz ( FTP サーバー)が WWW サーバーとして利用でき
るようになっていますが、あれなども、Upload 可能なフォルダーを
WWW でアクセスできるようにしておくと、CGI を転送して実行される
という問題が生じるでしょうね。

yossan さんからのコメント
( Friday, March 08, 1996 21:01:08 )

いろいろ,有り難うございます.
実は,Mathematica Users' Groupで
サンプルを募集しています.今のところ,
メールで送ってもらうようにしているのですが,
どうもWebの利点が欠けているようで.....

もしよろしければ,ご覧になって頂いて,
ご助言でもいただけないでしょうか.
<A HREF="http://tonoy.mis.konan-u.ac.jp/Mathematica/" TARGET="Top">Mathematica Users Group</A>

よろしくお願いいたします.

田中求之 さんからのコメント
( Friday, March 08, 1996 23:48:17 )

>実は,Mathematica Users' Groupで
>サンプルを募集しています.今のところ,
>メールで送ってもらうようにしているのですが,
>どうもWebの利点が欠けているようで.....

WWW の利点ということでしたら、サンプルを送ってもらうのではなく、むしろ
各自の Home においた画像をリンクしあうというのが正しいと思いますが(笑)

まぁ、現実的な策としては FTP サーバーでしょうか? でも FTP サーバー
(FTPd, NetPresenz)って、CPU を食うんですよねぇ...

yossan さんからのコメント
( Saturday, March 09, 1996 22:06:04 )

>WWW の利点ということでしたら、サンプルを送ってもらうのではなく、むしろ
>各自の Home においた画像をリンクしあうというのが正しいと思いますが(笑)

ところが、まだ、ホームページを持っていない人が居ますから.....
それに、ページを作るにも時間がかかりますし.....
教諭って時間がないんですよねぇ....

というわけで、授業に使ったソースをとりあえず発表する場が必要と
思った訳なんです.....

>まぁ、現実的な策としては FTP サーバーでしょうか? でも FTP サーバー
>(FTPd, NetPresenz)って、CPU を食うんですよねぇ...
結構大変ですね.....
別のMacを使うしかないですか?
それから、FTPサーバを使った場合、ファイルをPutする方法は
HTMLではどのように表現するのでしょうか?

田中求之 さんからのコメント
( Sunday, March 10, 1996 00:47:02 )

FTP サーバーにアップしてもらう場合は、ページからは無理です。Fetch なり
Anarchie なりのソフトを使って、通常のアップロードの作業を行ってもらう
ことになります。


なお、FORM タグによるアップロードのバリエーションとして、ファイルのデータ
をサーバーではなく、あなたあてのメールとして送ってもらうという方法もあり
ます。現状ではこちらのほうが使えるでしょう。また、メールを Netscape で
読めば、おそらくデータがうまく取り出せるのではないかと思います。
( Netscape って Multi-part の MIME に対応したメーラーになっている
んですよね??)

FORM タグの action の部分を、 ACTION="mailto:your@mail.address"
というように、mailto: で指定しておくものです。

メールで送られることは確認済みです。

希望通りに使えるかどうか、お試しください。

yossan さんからのコメント
( Sunday, March 10, 1996 07:47:36 )

大変参考になります。
このような、ページがあると、助かります。

ところで、ToolKitを使った例を挙げたページ(ボタンを押す毎に違う言葉が表示されるなど)の
URLがわからなくなってしまいました。
つまらないことを、尋ねますがお許しください。

田中求之 さんからのコメント
( Sunday, March 10, 1996 11:35:48 )

>ToolKitを使った例を挙げたページ

Communication Square というコーナーがそれです。このコーナーのページは、
すべて CGI で仕掛けをやってます(もちろん、この会議室もですけど)。

  http://mtlab.ecn.fpu.ac.jp/comSq.html

が URL です。

yossan さんからのコメント
( Sunday, March 10, 1996 21:54:56 )

有り難うございます。ちょっと覗いてみます。