• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

hochladen mit move_uploaded_file scheitert

Folgender Auschnitt aus einem Formular:



  • $thumb_1 = "thumb1.jpg";

    echo "Thumbnail-Bild: <input type='file' name='thumbnail_bild_1' value='" . $thumb_1 . "size=150 '";


Nun möchte ich das gewählte File aus diesem Auschnitt hochladen, nimmt mir hier aber immer nur den else-Zweig. Lädtz also nicht hoch
Hier zum Test ist fest 'thumb1.jpg' eingetragen.

  • if( move_uploaded_file('thumb1.jpg','http://www.ersttagsbriefe.com/images_zusatz/') )
    {
    $result_thumbnails = mysql_query(" INSERT INTO shop_bilder VALUES ('$id_thumb', '$_POST[thumbnail_bild_1]'); shop_bilder VALUES ('$id_thumb', 'thumb1.jpg'); " );
    } else
    $result_thumbnails = mysql_query(" INSERT INTO shop_bilder VALUES ('$id_thumb', 'not uploaded'); " );
    ?>
 
Du hast die Funktionsweise von move_uploaded_file() nicht verstanden.
http://de.php.net/manual/de/function.move-uploaded-file.php

Das erste Argument ist der temp. Name unter dem PHP die per HTTP POST übergebenen Daten gespeichert hat, das 2. ein Name in lokalem Dateisystem (keinesfalls eine URL).

Da du die AFAICS Datei sowieso in der DB speichern willst benötigst du move_uploaded_file() eigentlich nicht. Aber soweit ich den Code sehe wird das nicht funktionieren, du solltest die Werte im Superglobal $FILES prüfen und verwenden:
http://de.php.net/manual/de/features.file-upload.php
 
Nicht verstanden stimmt wohl, erweitere gerade einen Quellcode und habe die Geschichte abgeschrieben.

Sehe bei deinem Link aber den Wald vor lauter Bäumen nicht und komm damit nicht zurecht.

Inzwischen probiert:

Ausgabe des offenbar assoziativen Arrays: print_r($_FILES['thumbnail_bild_1']):

Array ( [name] => thumb1.jpg [type] => image/jpeg [tmp_name] => /tmp/phplb7hye [error] => 0 [size] => 2396)


Dann müsste doch mit dem PHP-Code:


echo $_FILES['name'];

der Dateiname auszugeben sein oder??

Liefert aber:

Notice: Undefined index: name in /home/briefe/public_html/shop_admin/execute_new.php on line 85

Und wenn ich den Namen habe, dann habe ich noch nichts upgeloaded.
 
mampfi schrieb:
Code:
Array ( [name] => thumb1.jpg [type] => image/jpeg [tmp_name] => /tmp/phplb7hye [error] => 0 [size] => 2396)
Dann müsste doch mit dem PHP-Code:

echo $_FILES['name'];

der Dateiname auszugeben sein oder??
Nein, name ist der orginale Name der Datei der übermittelt wurde. Bei erfolgreicher Übermittlung der Datei auf den Server wird die Datei unter tmp_name gespeichert, das wäre also deine Baustelle.
Bevor du den name key verwendest sollte der geprüft werden, z.B. '../../passwd' wäre verdächtig...
 
Oben