Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //参考サイト,https://qiita.com/mpyw/items/117ab6a88fd58d911c34
- //参考サイト,https://qiita.com/ShibuyaKosuke/items/dbe45cbf43bd819bf6cc
- //------------デバック用------------
- ini_set("display_errors", On);
- error_reporting(E_ALL);
- //------------デバック用------------
- function file_upload()
- {
- // POSTではないとき何もしない
- if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') !== 'POST') {
- return;
- }
- // アップロードファイル
- $upfile = $_FILES['imgfile'];
- if (!(isset($upfile['error']) && is_int($upfile['error']))){
- return;
- }
- // $upfile['error'] の値を確認
- switch ($upfile['error']) {
- case UPLOAD_ERR_OK:
- break;
- case UPLOAD_ERR_NO_FILE:
- throw new RuntimeException('ファイルが選択されていません', 400);
- case UPLOAD_ERR_INI_SIZE:
- case UPLOAD_ERR_FORM_SIZE:
- throw new RuntimeException('ファイルサイズが大きすぎます', 400);
- default:
- throw new RuntimeException('その他のエラーが発生しました', 500);
- }
- // $upfile['mime']の値はブラウザ側で偽装可能なので
- // MIMEタイプを自前でチェックする
- if (!$info = @getimagesize($upfile['tmp_name'])) {
- throw new RuntimeException('有効な画像ファイルを指定してください', 400);
- }
- if (!in_array($info[2], [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG], true)) {
- throw new RuntimeException('未対応の画像形式です', 400);
- }
- // アップロードディレクトリに移動
- if (!move_uploaded_file($upfile['tmp_name'], $upfile['name'])) {
- throw new Exception('ファイルの保存に失敗しました。');
- }
- }
- try {
- // ファイルアップロード
- file_upload();
- echo $_POST['title'];
- echo 'をアップロードしました';
- } catch (Exception $e) {
- $error = $e->getMessage();
- echo $error;
- }
Add Comment
Please, Sign In to add comment