Andreas Korthaus: Ein paar Fragen zu Datei-Uploads

Beitrag lesen

Hi!

Ich habe folgende Probleme:

  1. Wie prüfe ich, ob der Anwender einen gültigen Dateipfad im File-Feld angegeben hat? Ich bekomme, wenn ich z.B. "ABC" eingebe: Warning: getimagesize() [function.getimagesize]: Read error! ...
    In der angegebenen Zeile steht: getimagesize($_FILES["datei"]["tmp_name"])

Du musst serverseitig prüfen, z.B. mit $_FILES["datei"]["error"] ob ein Fehler aufgetreten ist, getimagesize() ob es sich um ein Bild handelt... dass letzteres einen Fehler ausgibt ist doch völlig logisch, da keine Datei hochgeladen wurde.

  1. Kann ich die Breite des File-Feldes nicht ändern?

nein.

  1. Wenn ich eine für die PHP-Einstellungen (upload_max_filesize) zu große Datei versuche upzuloaden, dann bekomme ich nach einer Weile die Fehlermeldung: Fatal error: Maximum execution time of 30 seconds exceeded ...
    Wie kann ich das abfangen und sowas wie "Zu große Datei" ausgeben?

Das Problem in diesem Fall ist nicht die Größenbeschränkung, sondern dass der Upload der großen Datei zu lange dauert(wenn die maximale Ausführungszeit auf 30 Sekunden begrenzt ist, schaffst Du mit einem Modem mit vielleicht 5 KB/Sek maximal eine 150 KB große Datei, bei schlechter Verbindung noch weniger!).  PHP-Scripte sind meist in Ihrer Laufzeit beschränkt(max_execution_time). Das kann in der php.ini verändert werden. Weitere "Probleme" sind post_max_size, upload_max_filesize und andere. Solche Fehler abzufangen ist durchaus möglich, siehe dazu: http://www.php.net/manual/de/ref.errorfunc.php, ist aber nicht so einfach wie es sich jetzt vielleicht anhört.

Grüße
Andreas