ファイルアップロード
クライアント側
<form enctype="multipart/form-data" action="__URL__" method="POST"> <!-- MAX_FILE_SIZE はバイト指定、 "file" input フィールドより前に置くこと --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- input 要素の名前が $_FILES 配列での名前 --> このファイルをアップロード: <input name="userfile" type="file" /> <input type="submit" value="ファイルを送信" /> </form>
サーバー側
$uploaddir = '/var/www/uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded.\n"; } else { echo "Possible file upload attack!\n"; } echo 'Here is some more debugging info:'; print_r($_FILES); print "</pre>";
○取得データ
$_FILES["file"]["name"] - アップロードされるファイルの名前 $_FILES["file"]["type"] - アップロードされるファイルのタイプ $_FILES["file"]["size"] - アップロードされるファイルのバイト・サイズ $_FILES["file"]["tmp_name"] - サーバに格納されるファイルのテンポラリ・コピーの名前 $_FILES["file"]["error"] - ファイルアップロードの結果によるエラーコード
注意すべき設定
■ php.ini
file_uploads
デフォルト:1
HTTP ファイルアップロード を有効とするかどうか
upload_max_filesize
デフォルト:2M
アップロードされるファイルの最大サイズ(バイト単位)
upload_tmp_dir
デフォルト:NULL
ファイルアップロード時にファイル保存に用いるテンポラリディレクトリ
PHPの実行ユーザーが書きこみ可能である必要がある
指定されない場合、PHPはシステムのデフォルト設定
post_max_size
デフォルト:8M
POSTデータに許可される最大サイズ
大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります
max_input_time
デフォルト:-1
サーバーがすべてのデータを受け取ってからスクリプトの実行を開始するまでの時間
■ パーミッション
upload_tmp_dir で指定するフォルダのアクセス権
★参考サイト