ファイルをアップロードする
ブラウザを使用してファイルをアップロードするサンプルです。CMSなどのシステム等で使用すると思います。サンプルではGIF/PNG/JPEGの画像ファイルの認識や各種エラーにも対応しています。言語はPHPとなります。
まずは結果から
[初期画面]
[アップロード後の画面]
ファイルを選択して「アップロードを実行する」ボタンを押すとサーバーへ画像ファイルがアップロードされます。アップロードされた画像ファイルはブラウザで表示されるようにしています。
ソースコード[upload.php]
早速、ソースコードを貼り付けます。
<?php $errmsg = ""; // エラーメッセージ define("FOLDER_UPLOAD" ,"./hoge/") ; // 保存先のフォルダ名(任意のフォルダ名にする) if (isset($_FILES["upfile"])){ // エラーの確認 switch ($_FILES["upfile"]["error"]) { case UPLOAD_ERR_OK: // OK break; case UPLOAD_ERR_NO_FILE: $errmsg = '<span style="font-weight:bold;color:red;">ファイルが選択されていません。</span><br />'; break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $errmsg .= '<span style="font-weight:bold;color:red;">「'. $_FILES["upfile"]["name"] . '」のファイルサイズが最大値を超えています。</span><br />'; break; default: $errmsg .= '<span style="font-weight:bold;color:red;">「'. $_FILES["upfile"]["name"] . '」:エラーが発生しました。</span><br />'; break; } if ($_FILES["upfile"]["error"] === UPLOAD_ERR_OK){ // 同名ファイルの確認 if (file_exists(FOLDER_UPLOAD .$_FILES["upfile"]["name"])){ $errmsg .= '<span style="font-weight:bold;color:red;">「' .$_FILES["upfile"]["name"] . '」は既に存在します。</span><br />'; } // ファイルタイプの確認 if (!( ($_FILES["upfile"]["type"] === 'image/gif') || ($_FILES["upfile"]["type"] === 'image/jpeg') || ($_FILES["upfile"]["type"] === 'image/png'))){ $errmsg .= '<span style="font-weight:bold;color:red;">「' .$_FILES["upfile"]["name"] . '」は対応していない形式です。</span><br />'; } } // テンポラリからファイルの移動 if ($errmsg == ""){ $filename = FOLDER_UPLOAD . $_FILES["upfile"]["name"]; if (move_uploaded_file($_FILES['upfile']['tmp_name'],$filename)){ // パーミッションの変更 chmod($filename,0644); }else{ $errmsg .= '<span style="font-weight:bold;color:red;">ファイルのアップロードに失敗しました。</span><br />'; } } // メッセージの表示 if ($errmsg == ""){ $errmsg .= '<span style="font-weight:bold;">・「' . $_FILES["upfile"]["name"] . '」をアップロードしました。</span><br />'; $errmsg .= '<img src="'. htmlspecialchars(FOLDER_UPLOAD . $_FILES["upfile"]["name"]) .'" /><br />'; } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div><?php echo $errmsg; ?></div> <br /> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="upfile" size="30" /><br /> <br /> <input type="submit" value="アップロードを実行する" /> </form> </body> </html>
サンプルの解説
HTMLではformタグにenctype="multipart/form-data"を追加する事でファイルがアップロードできるようになります。
PHPでは$_FILESでアップロードされたデータを扱うことができます。各種エラー処理を実施してから、move_uploaded_fileでサーバーのテンポラリから任意のフォルダへファイルをコピーします。
非常にざっくりな説明ですが後はソース内のコメントから読み取ってくださいね :-)
その他のサンプル
複数ファイルのアップロードとドラッグ&ドロップに対応したい場合は
をご覧下さい。
スポンサーリンク
関連記事
公開日:2015年01月28日
記事NO:00162