PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Upload-Script macht Probleme


J!M!
01.01.2006, 21:37:11
Tag!

Ich sitze an einem Upload-Skript für ein Photogallerie:


<?php
//Holen der Daten
$file = $_FILES['file'];
$submit = $_POST['submit'];

//Wenn auf Formularbutton gedrückt wurde...
if ($submit == "Hochladen"){

//Extrahieren der Dateiendung
$data_name = explode(".", $file_name);
$data_name_size = count($data_name);
$data_ext = $data_name[$data_name_size-1];

//Kleinbuchstaben
$data_ext = strtolower($data_ext);

// Nr.1
if (($file_size>0 &amp;&amp; $file_size<1048576) &amp;&amp; ($data_ext=="gif" || $data_ext=="jpg" || $data_ext=="bmp" || $data_ext=="jpeg")){
// Nr.2
if (@move_uploaded_file($file, "$username/$file_name")){
//Wenn Hochladen erfolgreich...
//Ausgabe
echo "Foto-Upload erfolgreich durchgeführt!";
?>
<br>
<table cellspacing="15">
<tr>
<td><a href="photo_admin.php">Zurück zur Administratoroberfläche</a></td>
<td><a href="/gallery/photo_view.php">Zurück zur Albenübersicht</a></td>
<td><a href="photo_upload_form.php">Noch ein Photo hochladen</a></td>
</tr>
</table>
<?php
//Schreiben des Namens des neu hochgeladenen Fotos
$dateiname = "photo.txt";
$datei=fopen($dateiname, "r");
$x = 0;
$saved = array();
while(!feof($datei)) {
$x++;
$saved[$x] = fgets($datei, 1024);
}
fclose($datei);

$saved = array_push($saved, $file_name);

$datei=fopen($dateiname, "w");
for ($i=1;$i <= $x; $i++) {
fwrite($datei, "$saved[$i]");
}
fclose($datei);

//End
}
// Nr.2
else {
echo "Datei konnte nicht hochgeladen werden! <a href=photo_upload_form.php>Zurück zum Upload-Formular</a>";
}
}
// Nr.1
else{
echo "Datei nicht vorhanden '\n' oder keine Bild-Datei (jpeg, bmp, gif)!!! <a href=photo_upload_form.php>Zurück zum Upload-Formular</a>";
}
}

Nun, mein Skript führt aber immer den else{echo "Datei konnte nicht hochgeladen werden! <a href=photo_upload_form.php>Zurück zum Upload-Formular</a>";}-Teil aus. Warum?
Die Syntax von move_uploaded_file() stimmt doch oder?
Das Holen der Formulardaten ist schon richtig. Habe es durch Ausgaben und so schon gecheckt.

Und mein Webspace erlaubt Datei-Uploads, hab das auch schon geprüft. Und chmod777 für den Ordner habe ich auch schon durchgeführt.


MfG J!M!

xabbuh
01.01.2006, 21:52:46
Warum lässt du das @ vor dem Aufruf von move_uploaded_file() in deinem Script stehen und unterdrückst damit mögliche Fehlermeldungen, wenn du merkst, dass das Script nicht das tut, was es soll?

J!M!
01.01.2006, 21:53:14
Um die Fehlersensibilität zu erhöhen, habe ich noch

"echo $_FILES['file']['error'];" in den else{}-Teil hinzugefügt.

DIe Ausgabe ist: "0".

Das heißt kein Error beim Hochladen. Warum funktioniert mein Skript aber nicht? :-(

MfG J!M!

xabbuh
01.01.2006, 22:01:27
Warum tust du nicht das, was ich geschrieben habe? Denn der Fehler wird höchstwarscheinlich nicht beim Upload auf den Server sondern beim Verschieben auftreten.

J!M!
01.01.2006, 22:29:11
Sorry... Hatte deinen Post irgendwie übersehen.


Aber auch nach dem Entfernen des @-Zeichens kommt keinerlei Fehlermeldungen...
Es wird immer nur der erwähnte else{}-Teil ausgeführt.

MfG J!M!

meikel
02.01.2006, 00:46:06
Nun, mein Skript führt aber immer den else{echo "Datei konnte nicht hochgeladen werden! <a href=photo_upload_form.php>Zurück zum Upload-Formular</a>";}-Teil aus. Warum?
Deshalb:
Das Holen der Formulardaten ist schon richtig.
Und das sieht so aus:
$file = $_FILES['file'];
$submit = $_POST['submit'];

//Wenn auf Formularbutton gedrückt wurde...
if ($submit == "Hochladen"){

//Extrahieren der Dateiendung
$data_name = explode(".", $file_name);

"Bei einer beliebigen Berechnung erweist sich die Variable, deren Richtigkeit für aller außer Zweifel steht, am Schluß als Fehlerquelle." (Murphy)

Schalte die Fehlerausgabe einfach mal ein, damit Dir PHP erzählen kann, daß $file_name nicht definiert ist.

Jürg
02.01.2006, 14:15:20
Ich hab da mal was geschrieben, vielleicht hilfts: Bildupload (http://www.zudila.ch/scripte/php_bildup.php)