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ü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ü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!