Problem mit Dateiupload
-
Hallo Leute, ich habe ein Problem mit Dateiuploads in PHP
folgendes ist der Code
if(isset($_POST['add'])){ if(isset($_FILES['file'])){ if(file_exists($_FILES['file']['tmp_name'])){ if(move_uploaded_file($_FILES['file']['tmp_name'],$_POST['title'].'.'.preg_replace('/[\w\W]*\./','',$_FILES['file']['name']))) echo "Der News - Eintrag wurde erfolgreich hinzugefügt"; else echo "Die Datei mit dem News - Eintrag konnte nicht gefunden werden"; } }
Die Methode "move_uploaded_file" gibt immer true zurück, dennoch ist die entsprechende Datei schliesslich nur von Zeit zu Zeit vorhanden.
An was kann das liegen? Habe ich einen Fehler im Script??
-
Dein Zielname wird aber korrekt zusammen gesetzt?
-
Absolut, sonst würde doch die Funktion nicht true zurückgeben?
-
Ishildur schrieb:
Absolut, sonst würde doch die Funktion nicht true zurückgeben?
Naja, wenn du so argumentierst, dann müsste ja alles richtig sein
Ishildur schrieb:
dennoch ist die entsprechende Datei schliesslich nur von Zeit zu Zeit vorhanden.
Kannst du irgendwelche Abhängigkeiten erkennen, oder wird die Datei das eine mal verschoben und dann wieder nicht, ohne dass du an den Formular-Daten etwas änderst?
-
Nun habe ich das Script zu Debuging - Zwecke folgendermassen abgeändert:
if(isset($_POST['add']) && isset($_FILES['file'])) echo (file_exists($_FILES['file']['tmp_name']) ? "Vorhanden : ".$_FILES['file']['tmp_name'] : "Nicht vorhanden")."<br>";
file_exists gibt immer "true" zurück, selbst dann, wenn ich eine Datei hochlade, welche es definitiv nicht gibt. Wenn ich anschliessend die gesammte Festplatte nach der entsprechenden Datei durchsuche, finde ich gar nichts!! Was soll denn dass??
Gruss Ishildur
-
Jetzt verstehe ich dich nicht so ganz - nach dem Upload ist es doch logisch, dass die Datei existiert
-
Ja aber ich lade eine Datei rauf, welche lokal nicht vorhanden ist, indem ich einen ungültigen Pfad angebe. Dennoch ist die Datei anschliessend auf dem Server vorhanden, das macht doch keinen Sinn??
Gruss Ishildur
-
Das verstehe ich jetzt nicht so ganz - wie kannst du eine Datei hochladen, die garnicht existiert
-
Das ist ja die Frage?! Ich gebe z.B. c:\fg als lokale Datei im Browser - Formular an, und trotzdem gibt file_exists auf dem Server anschliessend true zurück
-
Hab grad etwas rumprobiert - finde aber leider auch keine Lösung
-
Anstelle von file_exist, versuch doch mal mit is_uploaded_file
-
Mein Verdacht: Es wird eine datei erstellt und mit dem hochgeladenem gefüllt.
Wenn du eine nonexistente Datei angibst werden keine Daten gesendet. ergo: tmp_name ist eine leere Datei.
Kontrolliere das doch mal mit
$_FILES['userfile']['size']
-
OK, das habe ich versucht. Nun ist es zwar nicht mehr möglich, inexistende Datein hochzuladen, jedoch verbleibt ein weiteres Problem, und zwar werden existierende Dateien hochgeladen, und move_uploaded_file gibt auch true zurück und dennoch ist die Datei anschliessend nicht vorhanden...
Langsam aber sicher werde ich ein wenig ranzig!!!
-
verwendest du jetzt is_uploaded_file? Check mal welchen Wert
1. upload_tmp_dir
2. upload_max_filesize
3. Ob Uploads über haupt erlaubt sind.MfG CSS