phpbar.de logo

Mailinglisten-Archive

[php] Problem mit Dateiupload

[php] Problem mit Dateiupload

Joerg Behrens php_(at)_phpcenter.de
Wed, 6 Mar 2002 19:15:18 +0100


Moin,

----- Original Message -----
From: "Jo Schneider" <mail_(at)_joschneider.de>
To: <php_(at)_phpcenter.de>
Sent: Wednesday, March 06, 2002 5:26 PM
Subject: [php] Problem mit Dateiupload


> Hallo zusammen!
>
> bei mir endet das Script immer bei "die". Was mache ich falsch?
>
>
> Viele Grüße!
>
> der Jo.
>
> <?php
>
> $datei_verz = "http://www.server.de/uploads";
> $datei_url = "http://www.server.de/uploads";

$datei_verz = '/mach/hier/mal/den/dateipfad/hin';  // ;)


> if(isset( $fupload )) {
>
>     print "Pfad: $fupload<br>";
>     print "Name: $fupload_name<br>";
>     print "Gr&ouml;&szlig;e: $fupload_size<br>";
>     print "Typ: $fupload_type<br>";
>
>
>     if($fupload_type == "image/gif") {
>         print "$datei_verz/$fupload_name";
>         copy ( $fupload, "$datei_verz/".$fupload_name) or die ("Konnte
nicht
> kopieren");
>         print "<img src='$datei_url/$fupload_name'><br>";
>     }
> }

Hast du jemals das Manual zurate gezogen oder ist geraten worden?

> if(isset( $fupload )) {
Zugriff auf eine 'globale' Variable. Besser waere
$HTTP_POST_VARS/$_POST['fupload']

>     if($fupload_type == "image/gif") {

Arggggh! Der Mimetyp wird vom Browser uebermittelt und mit viel Glueck kommt
da einens Tages mal ein 'mime/ulead studio gif'. Wenn du nur Imagetypen
zulassen willst dann frag doch die Datei was sie ist!?!  Mit getimagesize()
bekommt man den Typ der temporeaeren Datei heraus die da in  /tmp noch
schlummert.

Der Test ob eine erfolgreicher Upload stattgefunden hat wird unterlassen? Du
hast zu is_uploaded_file()  keine Lust gehabt ? Sollte hier ein true
erfolgen ist der Test auf einen gueltigen Typ zumachen und dann mit
move_uploaded_file() die Datei zuverschieben an die gewuenschte Stelle als
den mit copy() blindlinks zuwueten. Das funtioniert dann unter Umstaenden
auch im safe_mode viel besser.


> ?>
>
> <form enctype="multipart/form-data" action="<?php print $PHP_SELF ?>"
> method="POST">
> <input type="hidden" name="MAX_FILE_SIZE" value="21200">

Aehmm....  hier ist clientseitig ein Limit von 21 koma zwo kilobyte (21.2kb)
eingebaut worden. Wird dies ueberschritten bricht der Client die
Uebermittlung ab... Trotzdem werden ein paar Daten uebermittelt. Somit
existiert das Array 'fupload' das bei deiner laschen Ueberpruefung
durchrutscht.

Setzen *sechs* ;).

Ueberfliege docheinamal bitte das engl. sprachige Manual unter
http://www.php.net/manual/en/features.file-upload.php .
Die Funktionen is_uploaded_file() und move_uploaded_file() sind leider erst
seit PHP 4 >= 4.0.3 bzw. PHP 3>= 3.0.17 dabei. Solltest du ein aelters PHP
haben ist auf das vorhanden sein des Tmpfiles zuueberpruefen oder noch
besser gleich mal 'updaten' :)

Gruss

--
TakeNet GmbH                        Mobil: 0171/60 57 963
D-97080 Wuerzburg                 Tel: +49 931 903-2243
Alfred-Nobel-Straße 20            Fax: +49 931 903-3025


php::bar PHP Wiki   -   Listenarchive