File Upload funktioniert nicht!

Alles, was PHP betrifft, kann hier besprochen werden.

File Upload funktioniert nicht!

Postby Thor79 » 06. April 2009 15:21

Hallo zusammen,
ich bin gerade am Verzweifeln. Ich habe ein Upload Formular mit PHP erstellt. Nachdem ich dann aber auf "Upload" klicke, kriege ich folgende Fehlermeldung:
Warning: move_uploaded_file(uploads/Homer1.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\phpdesigner_tmp1.php on line 9

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\php10F.tmp' to 'uploads/Homer1.gif' in C:\xampp\htdocs\phpdesigner_tmp1.php on line 9

Außerdem existiert die temporäre Datei C:\xampp\tmp\php10F.tmp, die ich über eine foreach Schleife ausgelesen habe garnicht in dem temporären Verzeichnis.
Muss ich noch irgendwelche Rechte setzen oder warum funktioniert das "moven" des Files nicht?

Gruß
Thor79
Thor79
 
Posts: 5
Joined: 26. January 2009 16:48

Re: File Upload funktioniert nicht!

Postby Wiedmann » 06. April 2009 15:30

oder warum funktioniert das "moven" des Files nicht?

Entweder stimmt was an deinem Code nicht, oder der Upload war schon nicht erfolgreich (was dein Code natürlich auch erkennen sollte).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: File Upload funktioniert nicht!

Postby Thor79 » 06. April 2009 15:35

Wiedmann wrote:
oder warum funktioniert das "moven" des Files nicht?

Entweder stimmt was an deinem Code nicht, oder der Upload war schon nicht erfolgreich (was dein Code natürlich auch erkennen sollte).


Also das hier ist der Code:
Code: Select all
<?php
  if (isset($_FILES['datei'])) {
    echo 'Dateiname: ' . htmlspecialchars($_FILES['datei']['name']);
    echo '<br />tempor&auml;rer Dateiname: ' . htmlspecialchars($_FILES['datei']['tmp_name']);
    echo '<br />Dateigr&ouml;&szlig;e: ' . $_FILES['datei']['size'];
    echo '<br />MIME-Typ: ' . $_FILES['datei']['type'];
   
    move_uploaded_file($_FILES['datei']['tmp_name'],
      'uploads/' . basename($_FILES['datei']['name']));
  }
?>
<form method="post" enctype="multipart/form-data">
  <input type="file" name="datei" /><br />
  <input type="submit" value="Upload!" />
</form>


Ich habe mal im Internet gesucht und bin darauf gestßen, dass keine Schreibrechte gesetzt sind bei den oben genannten Fehlermeldungen. Muss ich da vielleicht noch was bei xampp konfigurieren?
Code: Select all
Thor79
 
Posts: 5
Joined: 26. January 2009 16:48

Re: File Upload funktioniert nicht!

Postby Wiedmann » 06. April 2009 15:42

a) solltest du prüfen ob der Upload erfolgreich war
b) gibt es das Verzeichnis welches du als Ziel angibst? (du solltest auch da einen absoluten Pfad nehmen)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: File Upload funktioniert nicht!

Postby Thor79 » 06. April 2009 16:00

Wiedmann wrote:a) solltest du prüfen ob der Upload erfolgreich war
b) gibt es das Verzeichnis welches du als Ziel angibst? (du solltest auch da einen absoluten Pfad nehmen)


Jetzt hats geklappt! Ich habe zwar vor deinem Beitrag schon einmal mit einem absoluten Pfad probiert, habe aber einen Fehler mit den Slashes bzw. Backslashes gemacht. Ich wusste erst nicht, dass man die normalen Slashes statt der Backslashes zur Pfadangabe nehmen muss. Mit der Pfadangabe hats geklappt:
C:/xampp/htdocs/test/

Jetzt bin ich erstmal happy und kann mich daran setzen, das Script noch zu verbessern. :)
Thor79
 
Posts: 5
Joined: 26. January 2009 16:48

Re: File Upload funktioniert nicht!

Postby Wiedmann » 06. April 2009 16:11

Ich wusste erst nicht, dass man die normalen Slashes statt der Backslashes zur Pfadangabe nehmen muss.

Müssen nicht, dass geht auch mit Backslashes.

Slashes haben halt den Vorteil, dass sie überall funktionieren (zumindest bei PHP eigenen Funktionen). Backslashes nur bei Windows.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: File Upload funktioniert nicht!

Postby Nobbie » 06. April 2009 16:37

Und wenn man ganz portabel programmieren will und auf Nummer sicher gehen will, benutzt man weder Slashes noch Backslashes sondern die PHP Konstante DIRECTORY_SEPARATOR - dafür ist sie da.
Nobbie
 
Posts: 8765
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests