Frage zum upload tutorial

matze1983

Erfahrenes Mitglied
hallöchen alle zusammen,

ich sitze schon länger an dem Problem, ein script hinzubekommen, welches Bilder hochlädt. Im Turtorial, habe ich da etwas von antihor gefunden, habe ihn auch schon angeschrieben und par tage gewartet, jdeoch scheint er nicht online zu kommen. Drum wollte ich mal fragen, ob jemand anderes, welcher der Materie mächtig ist:-), eine Antwort dazu findet. Ich habe mich an das Tutorial gehalten und dennoch klappt es nicht, aber es kommen auch keine Fehlermeldungen...die rechte habe ich auch überprüft, nun fallen mir keine Fehler mehr ein, woran es nun liegen könnte.
Im Voraus schon mal danke.
MfG Mathias

PHP:
//Bild upload 
  
$path= "bilder/user/userprofil/"; 

 if($_POST['gesendet'] == "upload")  
  {  
    $tempname = $_FILES['file']['tmp_name'];   
    $name = $_FILES['file']['name'];  
     
    $type = $_FILES['file']['type'];   
    $size = $_FILES['file']['size'];     
     
    if($type != "image/jpeg")  
    {  $err[] = "nur jpeg Dateien dürfen hochgeladen werden."; }   
    if($size > "2000000")  
    {  $err[] = "Die Datei ist zu gross!<br>Maximale Dateigrosse beträgt 2MB!"; }  
    if(empty($err))  
    {  copy("$tempname", "../$path.$name");   
       echo "Die Datei $name wurde erfolgreich hochgeladen!"; }   
    else  
    {  foreach($err as $error)   
       echo "$error<br>";  }
 
Hi Leutz,

also ich bin das nochmal durchgegangen,...es klappt soweit.
mein Problem ist nur, dass jetzt zwar das Script efolgreich läuft,...und dieses mir das auch wieder gibt...jedoch wird die Datei nicht in das Verzeichnis kopiert

script schaut jetzt so aus
PHP:
<?php  
$tempname = $_FILES['file']['tmp_name'];  
$name = $_FILES['file']['name']; 
$type = $_FILES['file']['type'];  
$size = $_FILES['file']['size'];  

if($type !='image/jpg' && $size > '2000000') 
{  
    $err[] = "Das Format wurde nicht eingehalten!";  
}  

else
{  
    copy("$tempname", "profilbilder/$name");  
    echo "Die Datei $name wurde erfolgreich hochgeladen!";  
}  

  
?>
:confused:
 
Guck mal, ob du eine Fehlermeldung bekommst, wenn du [phpf]error_reporting[/phpf] auf E_ALL und display_errors auf on setzt.
PHP:
ini_set('display_errors', 'on');
error_reporting(E_ALL);
 
Hatte mal so ein ähnliches Problem bei mir hat es dann mit
PHP:
        if($_FILES['userfile']['size'] <= $groessemax*1024){
			if(decoct(fileperms($img_path_up))==40777){
				if(@copy($temp, $img_path_up.$filename)){ 
					chdir('playlisten/'); // usw.
geklappt, sprich ich musste warum auch immer chdir ausführen.

mfg Spikaner
 
Hallo ihr beiden,

erstmal danke für eure Antworten. Denoch habe ich noch einige Fragen, die sich jetzt neu aufgeworfen haben, bitte habt Verständnis, denn mein Wissen, was PHP betrifft ist doch noch stark begrenzt.

@mAu: habe dein Ratschlag ausgeführt...dabei spuckt er folgende zeile aus
Notice: Undefined index: file in /mnt/web6/12/21/5972421 /htdocs/nbjungs/seiten/user/management/upload.php on line 4
Daraus läst sich für mich schlussfolgern, dass er die Variablen nicht
erkennt,..aber warum?
@spikaner: habe auch deinen Ratschlag versucht umzusetzen...jedoch mangelt es hier
an Grundwissen bei mir. Weil eigentlich dient der Befehl doch dafür um das
angegebene Verzeichnis zu aktualisieren. Habe also nur die eine Zeile
herauskopiert bei dir und so ergänzt
PHP:
chdir('profilbilder/');
dies hab ich an Zeile unter dem "copy" hinzugefügt. Jedoch weis
ich nicht genau, welches Verzeichnis ich angeben soll...dass was gerade läuft,
oder wo das Bild hinkommen soll?
 
Wie heißt das <input type="file"> Feld denn? Das muss nämlich bei dem $_FILES-Array angegeben werden. Und ist der enctype auf multipart/form-data gesetzt? Siehe dazu Felder für Datei-Upload definieren

Z.B:
PHP:
// Dein Dateiinput
<input type="file" name="datei">

// Dann müsste das $_FILES folgendermaßen aussehen
$tmpName = $_FILES['datei']['tmp_name'];
// etc.
 
Hi mAu,

also ich habe das jetzt mal so umgesetzt wie du gesagt hast...der Fehler war wirklich das ich die Variable falsch gesetzt habe. Nun hab ich das mal geändert, die Fhler werden nicht mehr angezeigt, nun aber bleibt die Seite leer. Er gibt mir nicht wieder dass das script ausgeführt wurde oder Fehler an.:confused:
das Form lautet
HTML:
<form method='post' enctype='multipart/form-data' action='upload.php'>
<input name='profilbild' type='file'>
habe es wie folgt jetzt geschrieben:
PHP:
 <?  
extract($_SERVER);
extract($_ENV);
extract($_GET);
extract($_POST);
extract($_REQUEST);

ini_set('display_errors', 'on');
error_reporting(E_ALL);  

if($_POST['gesendet'] == "upload")   
{
$tempname = $_FILES['profilbild']['tmp_name'];  
$name = $_FILES['profilbild']['name']; 
$type = $_FILES['profilbild']['type'];  
$size = $_FILES['profilbild']['size'];  

if($type !='image/jpg' && $size > '2048') 
{  
    $err[] = "Das Format wurde nicht eingehalten!";  
}  

else
{  
    copy("$tempname","profilbilder/$name");  
  

    echo "Die Datei $name wurde erfolgreich hochgeladen!";  
}
}  
?>
 
Zuletzt bearbeitet:
So hier wie es richtig sein muss:

Korrektur von mAu: nochmal Danke!

PHP:
<?php  


ini_set('display_errors', 'on');
error_reporting(E_ALL);  

if(isset($_POST['gesendet'])) 
{
    $tempname = $_FILES['profilbild']['tmp_name'];  
    $name = $_FILES['profilbild']['name']; 
    $type = $_FILES['profilbild']['type'];  
    $size = $_FILES['profilbild']['size'];  
    $err = array();

      if($type !='image/jpeg') 
    {  
        $err[] = "Das Format wurde nicht eingehalten";  
    }

    if($size > 2048)
    {
        $err[] = "Die Datei ist größer als 2048Bytes";
    }

    if(empty($err))
    {
        copy("$tempname","profilbilder/$name");  
      
        echo "Die Datei $name wurde erfolgreich hochgeladen!";
    }
    else
    {
        foreach($err as $error)
        {
            echo "$error<br>";
        }
    }
} 
?>
 
Zurück