0251 / 590 837 15
info@a-coding-project.de
;

Upload-Überprüfung (CMS)

Beim Dateiupload können viele Probleme auftreten. So kann es zum Beispiel sein, dass die Dateigröße die max. zugelassene Größe überschreitet. Das wird in unserem CMS zur Zeit noch nicht geprüft, was sich heute ändert!

Das Geheimnis der Überprüfung befindet sich in den $_FILEs. Dort gibt es eine Eigenschaft namens error. Sie sagt, ob etwas und was falsch gelaufen ist. Das ganze geht über die folgenden Error-Codes:

0 Alles erfolgreich
1 Max. zugelassene Dateigröße (php.ini) überschritten
2 Max. Bildgröße überschritten
3 Datei wurde nur teilweise hochgeladen
4 Es wurde keine Datei hochgeladen

Die Überprüfung erfolgt bei uns in der neuen Funktion checkUploadFile der Klasse FileServer:

/system/classes/fileserver.phpPHP
protected function checkUploadFile($file){
  $res = true;
  self::$uploadFailure = "";

  switch($file['error']){
    case 0:
      break;
    case 1:
      $res = false;
      self::$uploadFailure = str_replace("{VAR:MAX_FILESIZE}",
           ini_get('upload_max_filesize'),
           $GLOBALS['language']->getString("UPlOAD_FAILED_SIZE"));
      break;
    case 2:
      $res = false;
      self::$uploadFailure = str_replace("{VAR:MAX_FILESIZE}",
           IMAGE_MAX_IMAGE_SIZE,
           $GLOBALS['language']->getString("UPlOAD_FAILED_IMAGE_SIZE");
      break;
    case 3:
      $res = false;
      self::$uploadFailure =
           $GLOBALS['language']->getString("UPlOAD_FAILED_PARTIALLY");
    case 4:
      $res = false;
      self::$uploadFailure =
           $GLOBALS['language']->getString("UPlOAD_FAILED_NONE");
  }

  return $res;
}

Aufgerufen wird die Funktion in der upload-Funktion, auch vom FileServer:

/system/classes/fileserver.phpPHP
    function upload($base,$file){
      $res = false;
      if(self::checkUploadFile($file)){
        $tempname = $file['tmp_name'];
        $name = $file['name'];
        $res = copy($tempname, $base."/".$name);
        $args['name'] = $base."/".$name;
        if($res) EventManager::raiseEvent("file_uploaded","../",$args);
      }
      return $res;
    }

Zu guter letzt musste ich in den Sprachdatenbanken noch die jeweiligen Fehlernachrichten eintragen und diese im Uploader ausgeben. Alle Details stehen in r94.