Bildupload scheint OK aber kein Upload

ciberjoerg

Erfahrenes Mitglied
Trotz dem ich die vermutung habe das das script ne macke hat, bin ich mir nicht sicher ob es nicht Fehlerfrei ist.
Es wird einfach kein Bild hochgeladen und keine fehlermeldung Angegeben. Mein script:
PHP:
<?
if($_POST[submit] AND !empty($_POST[flyer])){
    $uppath="upload/";
    $groessemax = 1024;
    if ((($_FILES["flyer"]["type"] == "image/jpeg") || ($_FILES["flyer"]["type"] == "image/jpg") || ($_FILES["flyer"]["type"] == "image/pjpeg")) && ($_FILES["flyer"]["size"] < $groessemax*1024)){
        if ($_FILES["flyer"]["error"] > 0){
                echo $_FILES["flyer"]["error"];
                $berr3 ="true"; // falscher dateityp oder zu groß
                $page = "5";
                  $formcheck ="false";
        }
        else{
            $filename= $_FILES["flyer"]["name"];
            $newname = time().$_FILES["flyer"]["name"];
            if (file_exists($uppath . $newname)){
                echo $newname . " already exists. ";
                $berr4 ="true";//file exist
                $page = "5";
                  $formcheck ="false";
            }
            else{
                move_uploaded_file($_FILES["flyer"]["tmp_name"],
                  $uppath . $newname);
                  $bild_url= $uppath . $newname;
                  $formcheck = "ok";
                echo "file saved";
                }
        }
    }    
}
elseif($_POST[submit] AND empty($_POST[flyer])){
    $bild_url = "";
    $formcheck = "ok";
    
}

echo $formcheck."<br>";
echo $bild_url."<br>";

?><form action="testbild1.php" method="post">
<label>Flyer: 
        <input type="file" name="flyer" id="flyer" />
    </label><br>
<input type="submit" name="submit" id="submit" value="Weiter&gt;&gt;" />

</form>
 
Trotz dem ich die vermutung habe das das script ne macke hat, bin ich mir nicht sicher ob es nicht Fehlerfrei ist.
Es wird einfach kein Bild hochgeladen und keine fehlermeldung Angegeben. Mein script:
PHP:
<?
if($_POST[submit] AND !empty($_POST[flyer])){
    $uppath="upload/";
    $groessemax = 1024;
    if ((($_FILES["flyer"]["type"] == "image/jpeg") || ($_FILES["flyer"]["type"] == "image/jpg") || ($_FILES["flyer"]["type"] == "image/pjpeg")) && ($_FILES["flyer"]["size"] < $groessemax*1024)){
        if ($_FILES["flyer"]["error"] > 0){
                echo $_FILES["flyer"]["error"];
                $berr3 ="true"; // falscher dateityp oder zu groß
                $page = "5";
                  $formcheck ="false";
        }
        else{
            $filename= $_FILES["flyer"]["name"];
            $newname = time().$_FILES["flyer"]["name"];
            if (file_exists($uppath . $newname)){
                echo $newname . " already exists. ";
                $berr4 ="true";//file exist
                $page = "5";
                  $formcheck ="false";
            }
            else{
                move_uploaded_file($_FILES["flyer"]["tmp_name"],
                  $uppath . $newname);
                  $bild_url= $uppath . $newname;
                  $formcheck = "ok";
                echo "file saved";
                }
        }
    }    
}
elseif($_POST[submit] AND empty($_POST[flyer])){
    $bild_url = "";
    $formcheck = "ok";
    
}

echo $formcheck."<br>";
echo $bild_url."<br>";

?><form action="testbild1.php" method="post">
<label>Flyer: 
        <input type="file" name="flyer" id="flyer" />
    </label><br>
<input type="submit" name="submit" id="submit" value="Weiter&gt;&gt;" />

</form>

Das könntest Du auch mit den Funktionen GetImageSize und move_upload_file machen:

PHP:
   $dateityp = GetImageSize($_FILES['datei']['tmp_name']);
   if($dateityp[2] != 0 or $dateityp[1] != 0)     //*** Grafik-Typ - 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF
       {

       if($_FILES['datei']['size'] <  1024000)
          {
          move_uploaded_file($_FILES['datei']['tmp_name'], "image/".$_FILES['datei']['name']);
          echo "Das Bild wurde Erfolgreich nach image/".$_FILES['datei']['name']." hochgeladen";
          }

       else
          {
             echo "Die Max. Bildgröße beträgt 1024KB (1MB).";
             echo '<br>';
             echo "Es wurde kein Bild gespeichert.";
          }

       }

   else
       {
       echo "Es wurde kein Bild hochgeladen.";
       echo '<br><br>';
       echo "Ursachen:";
       echo '<br>';
       echo "- falsches Bildformat (nur Bilder im Format: .gif bzw. .jpg)";
       echo '<br>';
       echo "- es wurde kein Bild gewählt";
       echo '<br>';
       }


Voraussetzung ist, daß das Verzeichnis "image\" freigegeben ist. Für "Jeden" (erstellen)
 
Das könntest Du auch mit den Funktionen GetImageSize und move_upload_file machen:

PHP:
   $dateityp = GetImageSize($_FILES['datei']['tmp_name']);
   if($dateityp[2] != 0 or $dateityp[1] != 0)     //*** Grafik-Typ - 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF
       {

       if($_FILES['datei']['size'] <  1024000)
          {
          move_uploaded_file($_FILES['datei']['tmp_name'], "image/".$_FILES['datei']['name']);
          echo "Das Bild wurde Erfolgreich nach image/".$_FILES['datei']['name']." hochgeladen";
          }

       else
          {
             echo "Die Max. Bildgröße beträgt 1024KB (1MB).";
             echo '<br>';
             echo "Es wurde kein Bild gespeichert.";
          }

       }

   else
       {
       echo "Es wurde kein Bild hochgeladen.";
       echo '<br><br>';
       echo "Ursachen:";
       echo '<br>';
       echo "- falsches Bildformat (nur Bilder im Format: .gif bzw. .jpg)";
       echo '<br>';
       echo "- es wurde kein Bild gewählt";
       echo '<br>';
       }


Voraussetzung ist, daß das Verzeichnis "image\" freigegeben ist. Für "Jeden" (erstellen)
Sollte man das Verzeichnis nicht auch so angeben: "./image/" !?
 
Moin,


Code:
<form action="testbild1.php" method="post">


Schaue dir am Besten noch mal das betreffende Kapitel im Handbuch an: http://de2.php.net/manual/en/features.file-upload.post-method.php

Dir fehlt schon der passende enctype fürs Formular.

Solltest du das korrigiert haben, ist deine Prüfung auf $_POST['flyer'] nicht erfolgreich sein, denn "flyer" findest du dann nur im $_FILES-Array.

Weiterhin: (muss jetzt nicht unbedingt Fehlerursache sein, aber zumindest Grund für eine Notice)
Code:
if($_POST[submit] AND !empty($_POST[flyer]))

Die Keys von assoziativen Arrays, sofern es sich nicht um Referenzen auf Konstanten handelt, gehören gequotet.
Andernfalls bietest du Ansatzquellen für mannigfaltige Fehler, die in deinen Skripten entstehen Können, und welche sich später nur schwer lokalisieren lassen.

Hier mal ein Beispiel dafür:


Code:
<form method="post">
var1:<input name="var1" value="var1"><br>
var2:<input name="var2" value="var2"><br>
<input type="submit"><br>
</form>

<?php
  define('var1','var2');//<-- Hier kanns gemein werden, wenn zufällig eine Konstante definiert wird, welche dem Key entspricht
  
  if(isset($_POST['var1']))
  {
    ?>
    Erwartetes Ergebnis mit $_POST['var1']:<strong><?php echo htmlentities($_POST['var1']);?></strong><br>
    Fehlerhaftes Ergebnis mit $_POST[var1]:<strong><?php echo htmlentities($_POST[var1]);?></strong>
    <?php
  }
?>
 
Zurück