Mailinglisten-Archive |
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