ファイル・アップロード





ここは聞きかじりの情報です。
以下のようなHTMLフォームのファイルアップロードを使った CGI を書くときに 知らないと「困る」事柄です。


<form enctype="multipart/form-data" action="uso.exe" method="post">
<input type="file" name="FileUpload">
</form>




ファイルアップロード
 
Netscape 系
Netscape 3.0x, 4.0xはファイルアップロードをするとnsformで始まる一時ファイルを残し、Webブラウザを動かしているコンピュータのディスクを溢れさせることがある。

Netscape 4.0 でファイル名に # が含まれているとうまくアップロードできない。

Netscapeでファイルアップロードするとファイルの最後に余分な LF が付くことがある。

Content-Length: で示されたデータより実際にCGIが読めるデータが少なくデータが失われていることがある。

Netscapeでアップロードするファイルのパス名に漢字が含まれている(例えばC:\画像\bubble.bmp)場合空のデータが送られる。

Netscape 3.0でアップロードしようとしたファイルが存在しない場合空のデータが送られる。このバグは4.0では修正された。

UNIX版Netscape 4.0は"Browse"ボタンを押してアップロードファイルを選択しようとするとエラーになる。入力欄に直接入力した場合はOK。


Internet Explorer 系
ブラウザからアップロードされるファイルの区切りは
Content-type: multipart/form-data, boundary=AaB03x
のようなHTTPのヘッダーで示される。このときアップロードデータの終わりは"--AaB03x-- CRLF"という形で終わるとRFCで定められているがInternet Explorerは最後のCRLFを送らない。

Content-Length: で示されたデータより実際にCGIが読めるデータが少なくデータが失われていることがある。

Internet Explorer 3.02以前はファイルアップロードできない。3.02はFile Upload Add-Onを追加することによりできるようになる。