PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Dateiupload


Unrealfighter
11.10.2005, 00:43:00
Hallo!

Habe mir ien Dateiupload Scrip geschrieben welches auch auf meinem lokalen Webserver (XAMPP) wunderbar funktioniert nur auf meinem Webspace nicht.
Bekomme immer folgende Fehlermeldung:

Warning: copy(C:\\Dokumente und Einstellungen\\Chris\\Eigene Dateien\\Eigene Bilder\\100_0175.JPG): failed to open stream: No such file or directory in /var/www/web263/html/testscripte/dateiupload_buch.php on line 55

Könnt Ihr mir sagen woran das liegt? Hab auch schon ausprobiert den übergordneten Ordner und die Datei und den Bilder Ordner 777 Rechte zugeben. Kommt aber das gleiche dabei raus.

Könnt ihr mir vllt eine andere Methode zum Datei hochladen empfehlen mit der es dann vllt auch funktioniert?

Und was noch nicht funktioniert ist die Dateityp erkennung. Wenn ich JPEG oder GIF-Bilder hochlade sagt er immer unzulässiges Format. Hab den Bereich im Skript mal auskommentiert.

Ich hoffe Ihr könnt mir helfen

Hier das Script:

<html>
<head>
<title>Upload</title>
</head>
<body>

<?php

//Namen des Unterverzeichnisses in eine Variable schrieben

$uverz="dateien";

if($sent)
{
//Wenn das Unterverzeichnis noch nicht existiert, dieses anlegen
if(!file_exists($uverz))
{
mkdir($uverz,0755);
}

//Dateigroesse kontrollieren
if($neuedatei_size>100000)
{
$fehler="<br>Die Datei ist zu groß";
}

//Zulässige Dateitypen kontrollieren
//if(!($neuedatei_type=='image/pjpeg' OR $neuedatei_type=='image/gif'))
//{
// $fehler.="<br>Der Dateityp ist nicht zulässig.<br>";
//}

//Datei speichern, wenn kein Fehler vorliegt
if(!$fehler)
{
//Eindeutigen Namen generieren
$name=uniqid("");

//Dateiendung je nach Typ an den Namen anhängen
//switch($neuedatei_type)
//{
// case 'image/pjpeg':
$name.=".jpg";
// break;

// case 'image/gif':
// $name.=".gif";
// break;
//}

//Den Dateinamen um die Pfadangabe erweitern
$name=$uverz."/".$name;

//Die Datei in das Unterverzeichnis kopieren
copy($neuedatei,$name);
}
else
{
echo "<h2><font color=red>$fehler </font></h2>";
}

//Ausgeben der bereits vorhandenen Dateien im Unterverzeichnis
echo"<h2>Bisher hochgeladene Dateien</h2>";
$i=1;
$verzeichnis=opendir($uverz);
while($file=readdir($verzeichnis))
{
if(is_file($uverz."/".$file))
{
echo "<a href='$uverz/$file' target=_blank>Datei $i</a><br>";
$i++;
}
}
closedir($verzeichnis);
}
?>

<h2>Eine neue Datei hochladen</h2>

<form action='<?php echo $PHP_SELF; ?>' method='post' enctype='multipart/formdata'>
<input type="hidden" name="sent" value="1">
<p>Die Datei auswählen</p>
<input type=file name='neuedatei' size=50><br><br>
<input type="submit"><input type=reset>
</form>
</body>
</html>

Stevie B.
11.10.2005, 08:42:01
Also,

zum einen heißt es multipart/form-data, nicht multipart/formdata.
Zum anderen musst Du den type File mit $_FILES['neuedatei'] übernehmen. Somit ist zum Beispiel die Größe der Datei $_FILES['neuedatei']['size'].

Des Weiteren ist $uverz keine Datei, sondern ein Ordner. Somit musst Du is_dir nehmen, nicht file_exists. Weiterhin muss es mkdir($uverz,0777) sein, sonst kannst Du nichts reinladen.

xabbuh
11.10.2005, 10:14:44
Schau dir am besten auch mal die folgenden Seiten dazu an:
- http://www.php.net/manual/en/features.file-upload.php
- http://php-faq.de/q/q-formular-upload-php4.html

Des Weiteren ist $uverz keine Datei, sondern ein Ordner. Somit musst Du is_dir nehmen, nicht file_exists.
file_exists() funktioniert auch mit Verzeichnissen. Die Einschränkung dabei ist nur, dass du nicht weißt, ob es sich um eine Datei oder ein Verzeichnis handelst. Dafür wären dann wirklich is_file() / is_dir() zu verwenden.

Weiterhin muss es mkdir($uverz,0777) sein, sonst kannst Du nichts reinladen.
0755 reicht aus, wenn das PHP-Script das Verzeichnis anlegt, da es dann auch Eigentümer des Verzeichnisses ist und somit natürlich auch in das Verzeichnis schreiben darf.