<form method="post" action="up_save.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" /> <input type="file" name="upload_file" size="70"><br /> <input type="submit" value="upload" /> </form>
ファイルのアップロード
ファイルをアップロードするには、ファイルの情報をForm情報と一緒に、murltipart/form-data として送る必要があります。ファイル名を指定するには、input
タブのtype を file とします。
<?php $error_flag=FALSE; $name="./doc/".$_FILES['upload_file']['name']; if($_FILES['upload_file']['error']!= UPLOAD_ERR_OK){ $error_flag=TRUE; switch($_FILES['upload_file']['error']){ case UPLOAD_ERR_FORM_SIZE : $error_msg=" サイズ制限を越えています。"; break; case UPLOAD_ERR_NO_FILE : $error_msg="アップロード失敗"; break; } } if($error_flag){ print($error_msg); }else{ move_uploaded_file($_FILES['upload_file'] ['tmp_name'],$name); }?> <html> <head> <title>ファイルのアップロード</title> </head> <body> <h1>アップロード済みファイル</h1> <table border="1"> <tr> <th>ファイル</th><th>サイズ</th> </tr> <?php clearstatcache(); $o_dir=opendir("./doc/"); while($file=readdir($o_dir)){ if($file!="." && $file!=".."){ ?> <tr> <td><a href="./doc/<?php print($file); ?>"> <?php print($file); ?></a></td> <td><?php print(round(filesize("./doc/" .$file)/1024)); ?>KB</td> </tr> <?php } } closedir($o_dir); ?> </body> </html>
属性 | 意味 |
name | ファイル名 |
size | ファイルのサイズ |
type | ファイルの型 |
error | エラー種別 |
CGI
ファイルを受け取るCGI側ではファイル情報を2次元のシステムグローバル変数の $_files[ファイルtypeの名前][属性] で受け取ります。エラー種別は、ファイルサイズが、Formで指定したmax_file_sizeを超えたとき、UPLOAD_ERROR_FORM_SIZE、送信ファイルがないとき
UPLOAD_ERR_NO_FILE、正常の場合UPLOAD_ERR__OK となります。
ファイル名のチェック
ここでは、アップするファイルのチェックをしていません。同名のファイルを送ると上書きします。