| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

13-04-2010, 14:39
|
|
Shikamaru
Registrierter Benutzer
|
|
Registriert seit: Apr 2010
Beiträge: 28
|
|
Fehler beim upload einer Datei
Grüße!
Ich versuche mom ein Skript zu schreiben mit dem ich eine Datei auf dem Server hochladen kann. Leider funktionert das verschieben vom Temp. Ordner in den Zielordner nicht richtig. Zuerst habe ich die Funktion move_uploaded_files() verwendet. Aber ich hab beim abarbeiten des Skripts keine Fehlermeldung bekommen, es wurde nur einfach nicht ausgeführt. Jetzt versuche ich es mit der copy() Funktion bin mir aber nicht sicher wie ich dabei das Quellverzeichnis angeben kann. Hier ist der code:
PHP-Code:
[LEFT]if(isset($_FILES["datei"])) {
echo "Datei hochgeladen <br>";
if($_FILES["datei"]["error"] == UPLOAD_ERR_OK) { echo "Datei ohne Fehler<br>"; if ($_FILES["datei"]["size"] <= 100000) {
$file = $_FILES["datei"]["temp_name"]; $new_dir = "/upload"; $name = $_FILES["datei"]["name"];
copy($file,"$new_dir/$name"); //move_uploaded_file($file,"$new_dir/$name");
echo "Datei gespeichert.<br>"; } else { echo "Fehler bei der Göße der Datei<br>"; } } else { echo "Fehler beim Upload.<br>"; }[/LEFT] }
Hoffe ihr findet den Fehler.
Grüße shimu
Geändert von Shikamaru (13-04-2010 um 14:47 Uhr)
|

13-04-2010, 14:44
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
du solltest weiterhin move_uploaded_file verwenden, das Error-Reporting auf Maximum hochdrehen und die Verzeichnisrechte des Zielverzeichnisses überprüfen.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

13-04-2010, 14:46
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zunächst mal lass diesen Blödsinn:
PHP-Code:
copy($file,"$new_dir/$name");
Das schreib man so:
PHP-Code:
copy($file,$new_dir.'/'.$name);
Wie sieht denn dein error_reporting aus? Schau dir ggf. mal das Tutorial an, da geht es auch um Dateiuploads. Und die häufigsten Rechteprobleme.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

13-04-2010, 15:03
|
|
Shikamaru
Registrierter Benutzer
|
|
Registriert seit: Apr 2010
Beiträge: 28
|
|
Danke für die schnellen Antworten. Hab jetzt den Code dem Tutorial angepasst. Leider funktioniert das speichern noch immer nicht.
Auch beim durchsehen des error und access logs hab ich nichts entdeckt.
Ich hab schreib auf einem Windowssystem, wie sieht es da mit den Rechten aus?
Hier noch mal die angepasste Version:
PHP-Code:
[LEFT]if(isset($_FILES["datei"])) {
echo "Datei in Temp.ordner.<br>";
if($_FILES["datei"]["error"] == UPLOAD_ERR_OK) { echo "Datei ohne Fehler<br>"; if ($_FILES["datei"]["size"] <= 100000) {
$file = $_FILES["datei"]["temp_name"]; $dir = "/upload"; $name = $_FILES["datei"]["name"];
if(is_dir($dir)) { $folder = true; } else { $folder = mkdir($dir); } if (is_uploaded_file($file) && $folder) { if(move_uploaded_file($file, $dir.'/'.$name)) { echo "Datei gespeichert.<br>"; } else { echo "Leider nein."; } } } else { echo "Fehler bei der Göße der Datei<br>"; } } else { echo "Fehler beim Upload.<br>"; }[/LEFT] }
|

13-04-2010, 15:08
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Du hast uns noch immer nicht gesagt, wei dein error_reporting eingestellt ist. Denn aller Vorraussicht nach hast du ein Rechteproblem.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

13-04-2010, 15:38
|
|
Shikamaru
Registrierter Benutzer
|
|
Registriert seit: Apr 2010
Beiträge: 28
|
|
Hier ist mein error_reporting:
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
edit:
Hab jetzt etwas herumgespielt und bin auf folgendes draufgekommen:
In der Zeile
$file= $_FILES["datei"]["temp_name"];
wird auf $file kein Wert gespeichert. Dh ich hab versucht die Variable auszugeben aber es gibt keine ausgabe. Weiss jemand woran das liegen kann?
Geändert von Shikamaru (13-04-2010 um 15:52 Uhr)
|

13-04-2010, 16:04
|
|
Shikamaru
Registrierter Benutzer
|
|
Registriert seit: Apr 2010
Beiträge: 28
|
|
Hab jetzt eine Lösung gefunden die funktioniert. Ich hab das Array $_FILES in ein anderes Array $file gespeichert. Und dann mit diesem Array weitergearbeitet. Erst dann hat es funktioniert. Kann mir jemand erklären wieso das ich keinen speziellen Wert auslesen konnte aber das komplette Array kopieren konnte?
|

13-04-2010, 16:20
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Das ergibt keinen Sinn. Vielleicht hast du damit nur zufällig einen Fehler im Code behoben, den du vorher drin hattest?
Es heißt übrigens tmp_name, nicht temp_name, vielleicht war es das?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (13-04-2010 um 16:24 Uhr)
|

13-04-2010, 20:18
|
|
Shikamaru
Registrierter Benutzer
|
|
Registriert seit: Apr 2010
Beiträge: 28
|
|
Ja, genau das wars. Hab kurz bevor ich nach hause ging noch mals das $_FILE array angeschaut und gesehen dass ich den key falsch geschrieben hab...
Jetzt ist wieder alles so umgestellt dass es mit dem globalen Array arbeitet und ohne hilfe eines 2ten.
Danke für die Hilfe.
so long
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|