Changeset 23485


Ignore:
Timestamp:
2014/06/02 01:35:08 (7 years ago)
Author:
shutta
Message:

#2545 ファイルアップロード時のエラーメッセージが不適切
ファイルのアップロードのエラーチェック処理を分離。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/SC_UploadFile.php

    r23484 r23485  
    9898        $objErr = new SC_CheckError_Ex(); 
    9999        $cnt = 0; 
    100         $arrKeyname = array_flip($this->keyname); 
    101  
    102         if ($_FILES[$keyname]['error'] === UPLOAD_ERR_OK) { 
     100        $check = $this->checkUploadError($keyname, $objErr); 
     101        if ($check) { 
    103102            foreach ($this->keyname as $val) { 
    104103                // 一致したキーのファイルに情報を保存する。 
     
    135134                $cnt++; 
    136135            } 
    137         } elseif ($_FILES[$keyname]['error'] === UPLOAD_ERR_NO_FILE) { 
    138             $objErr->arrErr[$keyname] = '※ ' 
    139                 . $this->disp_name[$arrKeyname[$keyname]] 
    140                 . 'が選択されていません。' 
    141                 . '<br />'; 
    142         } elseif ($_FILES[$keyname]['error'] === UPLOAD_ERR_INI_SIZE) { 
    143             $objErr->arrErr[$keyname] = '※ ' 
    144                 . $this->disp_name[$arrKeyname[$keyname]] 
    145                 . 'のアップロードに失敗しました。' 
    146                 . '(.htaccessファイルのphp_value upload_max_filesizeを調整してください)' 
    147                 . '<br />'; 
    148         } else { 
    149             $objErr->arrErr[$keyname] = '※ ' 
    150                 . $this->disp_name[$arrKeyname[$keyname]] 
    151                 . 'のアップロードに失敗しました。' 
    152                 . 'エラーコードは[' . $_FILES[$keyname]['error'] . ']です。' 
    153                 . '<br />'; 
    154136        } 
    155137 
     
    162144        $objErr = new SC_CheckError_Ex(); 
    163145        $cnt = 0; 
    164         $arrKeyname = array_flip($this->keyname); 
    165  
    166         if ($_FILES[$keyname]['error'] === UPLOAD_ERR_OK) { 
     146        $check = $this->checkUploadError($keyname, $objErr); 
     147        if ($check) { 
    167148            foreach ($this->keyname as $val) { 
    168149                // 一致したキーのファイルに情報を保存する。 
     
    184165                $cnt++; 
    185166            } 
    186         } elseif ($_FILES[$keyname]['error'] === UPLOAD_ERR_NO_FILE) { 
    187             $objErr->arrErr[$keyname] = '※ ' 
    188                 . $this->disp_name[$arrKeyname[$keyname]] 
    189                 . 'が選択されていません。' 
    190                 . '<br />'; 
    191         } elseif ($_FILES[$keyname]['error'] === UPLOAD_ERR_INI_SIZE) { 
    192             $objErr->arrErr[$keyname] = '※ ' 
    193                 . $this->disp_name[$arrKeyname[$keyname]] 
    194                 . 'のアップロードに失敗しました。' 
    195                 . '(.htaccessファイルのphp_value upload_max_filesizeを調整してください)' 
    196                 . '<br />'; 
    197         } else { 
    198             $objErr->arrErr[$keyname] = '※ ' 
    199                 . $this->disp_name[$arrKeyname[$keyname]] 
    200                 . 'のアップロードに失敗しました。' 
    201                 . 'エラーコードは[' . $_FILES[$keyname]['error'] . ']です。' 
    202                 . '<br />'; 
    203167        } 
    204168 
     
    566530        return $dst_file; 
    567531    } 
     532 
     533    /** 
     534     * ファイルのアップロードのエラーを確認 
     535     * 
     536     * @param string $keyname ファイルinputタグのname 
     537     * @param object $objErr SC_CheckErrorインスタンス 
     538     * @return boolean 
     539     */ 
     540    public function checkUploadError($keyname, SC_CheckError &$objErr) 
     541    { 
     542        $index = array_search($keyname, $this->keyname); 
     543 
     544        switch ($_FILES[$keyname]['error']) { 
     545            case UPLOAD_ERR_OK: 
     546                return true; 
     547                break; 
     548            case UPLOAD_ERR_NO_FILE: 
     549                $objErr->arrErr[$keyname] = '※ ' 
     550                    . $this->disp_name[$index] 
     551                    . 'が選択されていません。' 
     552                    . '<br />'; 
     553                break; 
     554            case UPLOAD_ERR_INI_SIZE: 
     555                $objErr->arrErr[$keyname] = '※ ' 
     556                    . $this->disp_name[$index] 
     557                    . 'のアップロードに失敗しました。' 
     558                    . '(.htaccessファイルのphp_value upload_max_filesizeを調整してください)' 
     559                    . '<br />'; 
     560                break; 
     561            default: 
     562                $objErr->arrErr[$keyname] = '※ ' 
     563                    . $this->disp_name[$index] 
     564                    . 'のアップロードに失敗しました。' 
     565                    . 'エラーコードは[' . $_FILES[$keyname]['error'] . ']です。' 
     566                    . '<br />'; 
     567                break; 
     568        } 
     569 
     570        return false; 
     571    } 
    568572} 
Note: See TracChangeset for help on using the changeset viewer.