Viele von den PHP Codern da draussen kennen es wahrscheinlich schon, aber ich will trotzdem mal darauf hinweisen. Datei Uploads in PHP sind ja manchmal etwas verwirrend, vor allem was verschiedene Fehlerquellen angeht. Um schon im Vorhinein Fehler abzufangen bietet sich folgendes Code-Snippet an:
// test if a file was uploaded
$formFieldName = 'myFile';
if (isset($_FILES[$formFieldName])) {
switch(@$_FILES[$formFieldName]['error']) {
case UPLOAD_ERR_OK: // 0
// everything is ok with the upload for php
break;
case UPLOAD_ERR_INI_SIZE:
// file is larger than the size set in php.ini
// upload_max_filesize
break;
case UPLOAD_ERR_FORM_SIZE:
// file exceeds size set in form
break;
case UPLOAD_ERR_PARTIAL:
// file upload
break;
case UPLOAD_ERR_NO_FILE:
// no file was specified (empty form field)
break;
case UPLOAD_ERR_NO_TMP_DIR:
// no tmp dir specified in php.ini
break;
case UPLOAD_ERR_CANT_WRITE:
// tmp dir from php.ini is not writable for php
break;
default:
// unknown error code
break;
}
}
Wie man sieht bietet PHP weit aus mehr Möglichkeiten fehlgeschlagene Datei-Uploads zu erkennen als manchen bewusst ist. Vor allem wenn große Dateien hochgeladen werden die zu groß sind (upload_max_filesize) gibt PHP direkt einen Fehler aus, ohne riesen Dateien anzunehmen.