~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp
PHPファイルのアップロード
PHPスクリプトをHTMLフォームとともに使用すると、ユーザーがファイルをサーバーにアップロードできるようになります。最初に、ファイルは一時ディレクトリにアップロードされ、PHPスクリプトによってターゲットの場所に再配置されます。
php.iniをいじらないといけないんですが、ここでは割愛します
アップロードフォームの作成
下記のHTMコードは、アップローダフォームを作成します。このフォームは、メソッド属性がpostに設定されており、enctype属性がmultipart / form-dataに設定されています。
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size =$_FILES['image']['size']; $file_tmp =$_FILES['image']['tmp_name']; $file_type=$_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $expensions= array("jpeg","jpg","png"); if(in_array($file_ext,$expensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152){ $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true){ move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit"/> </form> </body> </html>
アップロードスクリプトの作成
$ _FILESという1つのグローバルなPHP変数があります。この変数は、関連する二次元配列であり、アップロードされたファイルに関連するすべての情報を保持します。したがって、フォームのアップロード時に入力のname属性に割り当てられた値がfileだった場合、PHPは次の5つの変数を作成します。
- $ _FILES [‘file’] [‘tmp_name’] – Webサーバーの一時ディレクトリにアップロードされたファイル。
- $ _FILES [‘file’] [‘name’] – アップロードされたファイルの実際の名前です。
- $ _FILES [‘file’] [‘size’] – アップロードされたファイルのサイズ(バイト単位)。
- $ _FILES [‘file’] [‘type’] – アップロードされたファイルのMIMEタイプです。
- $ _FILES [‘file’] [‘error’] – このファイルのアップロードに関連するエラーコードです。
例
以下の例では、アップロード画像を許可し、結果をアップロードされたファイル情報として返します。
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size = $_FILES['image']['size']; $file_tmp = $_FILES['image']['tmp_name']; $file_type = $_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $expensions= array("jpeg","jpg","png"); if(in_array($file_ext,$expensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152) { $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true) { move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action = "" method = "POST" enctype = "multipart/form-data"> <input type = "file" name = "image" /> <input type = "submit"/> <ul> <li>Sent file: <?php echo $_FILES['image']['name']; ?> <li>File size: <?php echo $_FILES['image']['size']; ?> <li>File type: <?php echo $_FILES['image']['type'] ?> </ul> </form> </body> </html>