move_uploaded_file
Karl
- php
Hallo,
Ich habe einen bildupload in PHP geschrieben, stehe jetzt allerdings vor dem Problem, daß es bei manchen jpgs ohne Probleme funktioniert bei anderen widerum bekomme ich eine Fehlermeldung daß die Datei nicht hochgeladen werden konnte...mittlerweile habe ich festgestellt das file['tmp_name'] als variable bei manchen jpgs nicht da ist...Ich habe überhaupt kein Plan warum, noch was ich dagegen tun kann...kann mir jemadn helfen ? bin total ratlos...
Gruss
Hi,
na ja, etwas Quellcode könnte sicherlich nicht schaden, als insbesondere das Upload-Formular und die relevanten Zeilen des Empfänger-Skriptes.
MfG
Rouven
HTML :
<form enctype="multipart/form-data" action="index.php4?mode=upload" method="POST">
Bild <input name="file" type="file">
Skript :
$fileName=$fileName."_".$file['name'];
$uploadFile = $uploadDir . $fileName;
if (move_uploaded_file($file['tmp_name'], $uploadFile)) {
chmod($uploadDir.$fileName,0766);
echo "Upload erfolgreich";
}
else
{
echo "Fehler";
}
Hi!
HTML :
<form enctype="multipart/form-data" action="index.php4?mode=upload" method="POST">
Bild <input name="file" type="file">Skript :
$fileName=$fileName."_".$file['name'];
$uploadFile = $uploadDir . $fileName;
if (move_uploaded_file($file['tmp_name'], $uploadFile)) {
chmod($uploadDir.$fileName,0766);
echo "Upload erfolgreich";
}
else
{
echo "Fehler";
}
Dieses Skript lässt beinahe keinen Fehler aus, den man nicht machen sollte. Hier mal eine kurze Auflistung:
Für alles weitere sei dir ein Blick ins Manual empfohlen. Versuche die Ratschläge dort umzusetzen und zeige uns dann das Ergebnis, falls es immer noch nicht funktionieren sollte.
Grüße,
Fabian St.
Ja das Ding, auch wenn mies gemacht, funktioniert ja, aber nur bei
manchen Dateien, für machen gibt es kein tmp_name das liegt ja nun nicht an den globals oder an den rechten...
Also,
Bild <input name="file" type="file">
Das ist mal ein sehr ungünstiger Name für das Feld. Ich sag nicht, dass das nicht geht, ich sage nur, es schreit danach ein Problem zu machen.
$fileName=$fileName."_".$file['name'];
if (move_uploaded_file($file['tmp_name'], $uploadFile)) {
Hier verlässt du dich darauf, dass $file von PHP vorbelegt wurde, baust also auf dem alt-hergebrachten REGISTER_GLOBALS auf. Das solltest du ebenfalls nicht tun. Verwende stattdessen die superglobalen Variablen $_GET[] bzw. $_POST[] für Formulareingaben und $_FILE für hochgeladene Dateien.
Ansonsten sieh dich mal in der PHP-FAQ um, da stehen auch Verarbeitungsmethoden für mehrere Dateien etc.
MfG
Rouven
hi,
$fileName=$fileName."_".$file['name'];
Verlasse dich nicht auf register_globals=on, sondern nutze besser $_FILES.
Was sagen denn das access- und das errorlog des Servers aus in den Fällen, wo so ein Upload fehlschlägt?
gruß,
wahsaga
Hello,
Ich habe einen bildupload in PHP geschrieben, stehe jetzt allerdings vor dem Problem, daß es bei manchen jpgs ohne Probleme funktioniert bei anderen widerum bekomme ich eine Fehlermeldung daß die Datei nicht hochgeladen werden konnte...mittlerweile habe ich festgestellt das file['tmp_name'] als variable bei manchen jpgs nicht da ist...Ich habe überhaupt kein Plan warum, noch was ich dagegen tun kann...kann mir jemadn helfen ? bin total ratlos...
Als erstes sollte man auch immer $_FILES['feldname']['error'] abbragen, was drinsteht und es auswerten.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom