SHARE
TWEET

upload.php

a guest Oct 6th, 2017 100 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. //参考サイト,https://qiita.com/mpyw/items/117ab6a88fd58d911c34
  3. //参考サイト,https://qiita.com/ShibuyaKosuke/items/dbe45cbf43bd819bf6cc
  4.  
  5. //------------デバック用------------
  6. ini_set("display_errors", On);
  7. error_reporting(E_ALL);
  8. //------------デバック用------------
  9.  
  10. function file_upload()
  11. {
  12.     // POSTではないとき何もしない
  13.     if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') !== 'POST') {
  14.         return;
  15.     }
  16.    
  17.     // アップロードファイル
  18.     $upfile = $_FILES['imgfile'];
  19.    
  20.     if (!(isset($upfile['error']) && is_int($upfile['error']))){
  21.         return;
  22.     }
  23.    
  24.     // $upfile['error'] の値を確認
  25.     switch ($upfile['error']) {
  26.         case UPLOAD_ERR_OK:
  27.             break;
  28.         case UPLOAD_ERR_NO_FILE:
  29.             throw new RuntimeException('ファイルが選択されていません', 400);
  30.         case UPLOAD_ERR_INI_SIZE:
  31.         case UPLOAD_ERR_FORM_SIZE:
  32.             throw new RuntimeException('ファイルサイズが大きすぎます', 400);
  33.         default:
  34.             throw new RuntimeException('その他のエラーが発生しました', 500);
  35.     }
  36.    
  37.     // $upfile['mime']の値はブラウザ側で偽装可能なので
  38.     // MIMEタイプを自前でチェックする
  39.     if (!$info = @getimagesize($upfile['tmp_name'])) {
  40.         throw new RuntimeException('有効な画像ファイルを指定してください', 400);
  41.     }
  42.     if (!in_array($info[2], [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG], true)) {
  43.         throw new RuntimeException('未対応の画像形式です', 400);
  44.     }
  45.    
  46.     // アップロードディレクトリに移動
  47.     if (!move_uploaded_file($upfile['tmp_name'], $upfile['name'])) {
  48.         throw new Exception('ファイルの保存に失敗しました。');
  49.     }
  50.  
  51. }
  52.  
  53. try {
  54.     // ファイルアップロード
  55.     file_upload();
  56.     echo $_POST['title'];
  57.     echo 'をアップロードしました';
  58. } catch (Exception $e) {
  59.     $error = $e->getMessage();
  60.     echo $error;
  61. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top