move_uploaded_file funzt nicht richtig!



  • Ich habe mal eine PHP-Datei geschrieben, u.a. eine funktion zum hochladen von dateien:

    function upload($filedir,$source,$source_name,$up_flag,$lastname)
    {
       if (!file_exists($filedir))
       {
           mkdir($filedir,0777);
       }
       chmod($filedir,0777);
    //   if ($lastname=="" || !$lastname)
    //   {
           $lastname=$source_name;
    //   }
       if (file_exists("$filedir/$lastname"))
       {
           if ($up_flag=="y")
           {
               unlink("$filedir/$lastname");
               move_uploaded_file($source,"$filedir/$lastname");
               if (file_exists($filedir."/".$lastname))
                  echo "$lastname wurde hinzugef&uuml;gt.<br>";
               else
                  echo "$lastname konnte nicht hochgeladen werden.";
           }
           else
               echo "$lastname ist schon vorhanden.<br>";
       }
       else
       {
           move_uploaded_file($source,"$filedir/$lastname");
           if (file_exists($filedir."/".$lastname))
              echo "$lastname wurde hinzugef&uuml;gt.<br>"; 
           else
              echo "$lastname konnte nicht hochgeladen werden.";
       }
    }
    

    Wenn ich diese jetzt so aufrufe:

    upload("directory",$file,basename($file2),"y","");
    

    dann nennt der server die datei anders als ich will, warumn? Kann mir jemand helfen? Danke!



  • Was sind denn $file und $file2? Die Datei wird richtig hochgeladen, hat aber den falschen Namen, oder wie?



  • Warum setzt du den Parameter $lastname eigentlich auf ""??



  • flenders schrieb:

    Was sind denn $file und $file2? Die Datei wird richtig hochgeladen, hat aber den falschen Namen, oder wie?

    Ja, genau, $file ist der lokale Dateiname, der übergeben wird (C:\...), $file2 ist nur folgendes:

    $file2=basename(ereg_replace('[\]',"/",$file));
    

    Oder wird bei diesem Code nicht der Dateiname übergeben?

    <form enctype="multipart/form-data" action="upload_file.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="2097152">
    Send this file: <input name="file" type="file">
    <input type="submit" value="Send File">
    </form>
    

    Achja, nochwas: Bei der Datei "upload_file.php" gebe ich den Parameter "$lastname" auch aus, komischer weise enthällt dieser nicht den Dateinamen, sondern etwa sowas hier: "phpvOykIe", ohne Endung...

    AJ schrieb:

    Warum setzt du den Parameter $lastname eigentlich auf ""??

    Weil ich die Funktion aus dem Internet habe, und ich will, dass die Datei weiterhin so heißt, wie sie auf dem PC heißt.



  • Wie wärs wenn du dir einfach auf php.net mal das Kapitel über FIleupload durchliest?!?

    -junix



  • Hab ich schon, ich hab das Ganze ja von dort übernommen, und Syntaxfehler korrigiert, doch es klappt immernoch nicht. Es ist nur ein Problem des Dateinamens, alles andere funktioniert ja.



  • http://de.php.net/manual/de/features.file-upload.php

    Du brauchst also $_FILES['file']['tmp_name'] und $_FILES['file']['name'] 🙂



  • Oh, danke, jetzt gehts endlich mal..... Danke flenders! 🙂


Anmelden zum Antworten