GR ~日々思うことを書いていく~

プレイしたゲームに関する雑記や思考整理

ファイルアップロード

クライアント側

 <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 で指定するフォルダのアクセス権
 
 
★参考サイト

お問い合わせフォーム     プライバシーポリシー