前提・実現したいこと
MySQLで、画像・動画投稿機能のある掲示板を作成しています。
画像・動画のデータサイズが大きすぎるときに、”ファイルサイズが大きすぎます”と表示させたいのですが、実際に大きすぎるファイルを投稿しようとすると、実際に投稿されることもなければ、エラーメッセージ($errormes)も出ません。
投稿が出来ないようになっているのは良いのですが、エラーも表示されないのはなぜなのでしょうか。
該当のソースコード
}if(!empty($_FILES['file']['name'])){ //----ファイルのアップロード時------ //ファイルアップロードがあったとき if ($_FILES['file']['error'] !== 0 && is_int($_FILES['file']['error']) && $_FILES["file"]["name"] !== ""){ /*is_int:変数が整数型かどうか検査*/ $errormes = ""; //エラーチェック(switchは条件式) switch ($_FILES['file']['error']) { case UPLOAD_ERR_OK: // OK break; case UPLOAD_ERR_NO_FILE: // 未選択 $errormes ="※ファイルが選択されていません" ; case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過 $errormes ="※ファイルサイズが大きすぎます" ; default:/*それ以外*/ $errormes ="※その他のエラーが発生しました" ; } echo "<font color =\"#db7093\">$errormes </font>"; }else{ //画像・動画をバイナリデータにする. $images = file_get_contents($_FILES['file']['tmp_name']); //拡張子を見る $tmp = pathinfo($_FILES["file"]["name"]); //ファイル名や拡張のみを取得 $extension = $tmp["extension"]; if($extension === "jpg" || $extension === "jpeg" || $extension === "JPG" || $extension === "JPEG"){ $extension = "jpeg"; } elseif($extension === "png" || $extension === "PNG"){ $extension = "png"; } elseif($extension === "gif" || $extension === "GIF"){ $extension = "gif"; } elseif($extension === "mp4" || $extension === "MP4"){ $extension = "mp4"; } else{ echo "非対応ファイルです.<br/>"; exit(1); } //DBに格納するファイルネーム設定 //サーバー側の一時的なファイルネームと取得時刻を結合した文字列にsha256をかける. $date2 = getdate(); $fname = $_FILES['file']['tmp_name'].$date2["year"].$date2["mon"].$date2["mday"].$date2["hours"].$date2["minutes"].$date2["seconds"]; $fname = hash("sha256", $fname); //画像・動画をDBに格納. $sql = $pdo -> prepare("INSERT INTO imageboard(name, comment, date, pass, fname, extension, images) VALUES (:name, :comment, :date, :pass, :fname, :extension, :images)"); $sql -> bindParam(':name', $name, PDO::PARAM_STR); $sql -> bindParam(':comment', $comment, PDO::PARAM_STR); $sql -> bindParam(':date', $date, PDO::PARAM_STR); $sql -> bindParam(':pass', $pass, PDO::PARAM_STR); $sql -> bindValue(':extension', $extension, PDO::PARAM_STR); $sql -> bindValue(':fname', $fname, PDO::PARAM_STR); $sql -> bindValue(':images', $images, PDO::PARAM_STR); $sql -> execute(); } }
試したこと
試したところ10秒の動画は投稿できます。
15秒を投稿すると”その他のエラーが発生しました"が表示されます。
30秒を投稿すると、再読み込みされた後何も変化が起きません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。