phpbar.de logo

Mailinglisten-Archive

[php] PEAR: HTTP_Upload

[php] PEAR: HTTP_Upload

Peter Linzenkirchner peter at linzenkirchner.de
Son Jan 2 20:00:24 CET 2005


Hallo,

antworte ich mir mal selbst ;)

> Ich erhalte immer die (falsche) Fehlermeldung NO_USER_FILE, wenn die 
> hochzuladende Datei größer ist als entweder MAX_FILE_SIZE im Formular 
> oder upload_max_filesize. Das Teil erscheint mir nicht ausgereift - z. 
> B. benötigt die mitgelieferte Beispieldatei php_flag register_globals 
> on, damit sie überhaupt funktioniert ...
>
> Allerdings finde ich auf der Seite vor PEAR keine Infos zu Bugs; 
> ausserdem wurde es bereits 11.000 mal heruntergeladen - da muss doch 
> schon jemand über den Bug gestolpert sein. Also stelle ich mich 
> vielleicht nur besonders dumm an.

Es ist m. E. ein logischer Fehler in der Klasse

(

|| statt && in dieser Bedingung:

  function HTTP_Upload_File(xxx)
     {
         xxxxxx

         if (empty($name) || $size == 0) {
                                      ^^^^

),

der dazu führt, dass nur Größen zwischen MAX_FILE_SIZE im Formular und 
upload_max_filesize mit der korrekten Fehlermeldung ausgegeben werden. 
Dateien über upload_max_filesize ergeben die falsche Fehlermeldung, 
dass keine Datei mitgesendet wurde. Einfach || durch && ersetzen reicht 
und es funktioniert.

Ausserdem kam mir noch post_max_size in die Quere. Da ein Überschreiten 
dieses Wertes das $_POST-Array komplett ausleert (und das $_FILES-Array 
ebenfalls), kann das Skript in diesem Fall nicht funktionieren. Ich 
behelfe mir jetzt, indem ich eine (versteckte) $_POST-Variable mit 
übergebe. Ist diese leer, so wurde post_max_size überschritten. Eine 
bessere Lösung habe ich im Archiv nicht gefunden.

viele Grüße
Peter

-- 
----------------------------------------------------------------
Peter Linzenkirchner
Lisardo Multimedia GmbH
Herrenbachstraße 19, 86161 Augsburg
Tel. ++49-821-150565, Fax ++49-821-150595
----------------------------------------------------------------


php::bar PHP Wiki   -   Listenarchive