phpbar.de logo

Mailinglisten-Archive

[php] Bildgroesse, -breite, -laenge

[php] Bildgroesse, -breite, -laenge

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Okt 27 14:01:50 CEST 2004


Hi Jörn,

Joern Grube schrieb:
> wiedermal eine (dumme) Frage von mir.
> Ich muss den Upload von Grafiken sicherstellen. Die Dinger duerfen max.
> 50KByte haben und max. 300x300 gross sein. Gibt es eine Moeglichkeit, das
> schon VOR dem Upload zu pruefen?
> filesize kann ich erst verwenden, wenn die Datei schon hochgeladen wurde,
> wie ich Laenge und Breite rauskriege, weiss ich auch noch nicht :(
> Vielleicht hat jemand ein paar Stichworte fuer mich, was ich nachlesen
> koennte.

die Größe einer Datei auf dem Rechner des Anwenders zu ermitteln, sollte
unter Sicherheitsaspekten im Prinzip unmöglich sein.


(1)

Breite und Höhe eines Bildes könntest Du nur ermitteln, wenn es Dir
gelänge, das Bild vor dem Abschicken des Formulars unsichtbar per
Javascript über den im Formular angegebenen Bildpfad von der Festplatte in
Deine Seite zu laden. Dann könntest Du mit den Javascript-image-Befehlen
in den meisten Browsern die Breite und Höhe dieses geladenen Bildes
ermitteln. Das klappt aber nicht immer:

"Im Netscape 6.1 wird in der Eigenschaft width der Wert 0 gespeichert,
wenn diese Angabe im HTML-Tag fehlt.
Das Ändern der Eigenschaft width ist bislang nur im MS Internet Explorer
und im Netscape 6.1 möglich."

Dieses Zitat und mehr dazu findest Du hier:

http://de.selfhtml.org/javascript/objekte/images.htm

Das oben beschriebene Vorgehen sollte und dürfte aber ohnehin nicht
funktionieren, weil damit ein großes Sicherheitsloch vorhanden wäre.


(2)

Clientseitig könntest Du die Dateigröße durch den Parameter "maxlength" im
input-Tag zu begrenzen versuchen. Dieser Weg ist jedoch auch mit Vorsicht
zu genießen:

"Beachten Sie jedoch, dass diese Angabe mit Vorsicht zu genießen ist. In
der HTML-Version 3.2 wurde es so bestimmt, in der Version 4.0 wird diese
Funktionalität beim maxlength-Attribut dagegen nicht mehr erwähnt."

Dieses Zitat und mehr dazu findest Du hier:

http://de.selfhtml.org/html/formulare/datei_upload.htm


(3)

Serverseitig könntest Du die Dateigröße durch das entsprechende Setzen des
PHP-Konfigurationsparameters "upload_max_filesize" für das entsprechende
Verzeichnis begrenzen.

Mehr dazu findest Du hier:

http://de2.php.net/manual/en/ini.sect.file-uploads.php#ini.upload-max-filesize


Den Abbruch eines zu großen Uploads unter (2) und (3) kannst Du dann
elegant auf der Oberfläche abfangen, indem Du prüfst, on
$_FILES['userfile']['error'] den Fehlercode "UPLOAD_ERR_INI_SIZE" bzw.
"UPLOAD_ERR_FORM_SIZE" enthält.

Mehr dazu findest Du hier:

http://de2.php.net/features.file-upload
http://de2.php.net/manual/en/features.file-upload.errors.php


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive