In response to Hans: The problem with your switch statement is that it never allows for no errors, i.e. the UPLOAD_ERR_OK val. So to still allow room for further errors, yet notice a no-error case, this needs to be addressed:
<?php
switch ($filearray["error"]) {
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_INI_SIZE:
throw new Exception("The uploaded file exceeds the upload_max_filesize directive (".ini_get("upload_max_filesize").") in php.ini.");
break;
case UPLOAD_ERR_FORM_SIZE:
throw new Exception("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.");
break;
case UPLOAD_ERR_PARTIAL:
throw new Exception("The uploaded file was only partially uploaded.");
break;
case UPLOAD_ERR_NO_FILE:
throw new Exception("No file was uploaded.");
break;
case UPLOAD_ERR_NO_TMP_DIR:
throw new Exception("Missing a temporary folder.");
break;
case UPLOAD_ERR_CANT_WRITE:
throw new Exception("Failed to write file to disk");
break;
default:
throw new Exception("Unknown File Error");
}
?>