Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Dateien uploaden (foreach Problem)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrere Dateien uploaden (foreach Problem)

    Hallo,

    ich brauche einen Dateiupload für mehrere Bilder. Soweit eigentlich kein Problem. Ich habe für die Upload-Felder feste Namen vergeben (userimage1, userimage2, etc.). Ich prüfe die Bilder mittels foreach, habe jedoch ein Problem. IN der foreach-Schleife geht mir die Variable (z.B. userimage1, etc.) verloren, bzw. ich habe darauf keinen Zugriff mehr. Wie komme ich an die Variable ran? Um es einfach zu sagen: Ich MUSS IN der foreach-Schleife wissen, ob es sich um userimage1, userimage2, etc. handelt, weiß jedoch nicht wie ich darauf zugreifen kann. Vielen lieben Dank für Eure Hilfe.


    Das Upload-Script (noch unfertig wegen der Problematik):

    Code:
    if (isset($_FILES)) 
    {
    
    //print_r($_FILES); // Hier kommt der Name [userimage1], etc. noch vor, in der Schleife nicht mehr.
    
        $fileerror = array();
    
        foreach($_FILES as $file) 
        {
    
        print_r($file); // Hier kann ich auf den Namen nicht mehr zugreifen
    
            if (!empty($file['name']) && ($file['error'] != 4)) 
            {
    
                $limitedext = array(".jpg",".jpeg");
                $extension  = strrchr($file['name'],'.');
                $sizebytes  = "1000000";
                $timestamp  = time();
    
                if (!in_array($extension, $limitedext)) {
                    $fileerror['extension'] = "Das Bild ".$file['name']." ist kein .jpg";
                }
    
                if ($file['size'] > $sizebytes) { 
                    $fileerror['sizebytes'] = "Das Bild ".$file['name']." ist zu groß";
                }
            }
        }
    }



    Und hier das Upload-Script:
    Code:
        <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">
        <input type="hidden" name="userimages" value="true" />
        <div class="abstand" style="padding-left:20px;">
        <table border="0" cellpadding="0" cellspacing="0" width="490">
        <tr>
          <td class="form_pixrow" colspan="2"></td>
        </tr>
        <tr>
          <td class="form_desc">Bild 1:</td>
          <td class="form"><input type="file" name="userimage1" style="width:300px;" /></td>
        </tr>
        <tr>
          <td class="form_pixrow" colspan="2"></td>
        </tr>
        <tr>
          <td class="form_desc">Bild 2:</td>
          <td class="form"><input type="file" name="userimage2" style="width:300px;" /></td>
        </tr>
        <tr>
          <td class="form_pixrow" colspan="2"></td>
        </tr>
        <tr>
          <td class="form_desc">Bild 3:</td>
          <td class="form"><input type="file" name="userimage3" style="width:300px;" /></td>
        </tr>
        <tr>
          <td class="form_pixrow" colspan="2"></td>
        </tr>
        <tr>
          <td class="form_desc">Bild 4:</td>
          <td class="form"><input type="file" name="userimage4" style="width:300px;" /></td>
        </tr>
        <tr>
          <td class="form_pixrow" colspan="2"></td>
        </tr>
        <tr>
          <td class="form_desc">Bild 5:</td>
          <td class="form"><input type="file" name="userimage5" style="width:300px;" /></td>
        </tr>
        <tr>
          <td class="form_pixrow" colspan="2"></td>
        </tr>
        </table>
        
    
        <input type="submit" value="Uploaden" />
        </div>
        </form>

  • #2
    Benutze foreach ($_FILES as $key => $value)
    in $key sollte jetzt "userimage1" etc. stehen.

    Kommentar


    • #3
      Hallo!

      Super, das hat schon mal geklappt, vielen Dank! Allerdings tut sich gerade ein für mich nicht erklärbares Problem auf. Ich habe ja die 5 Uploadfelder. Erlaubt sind nur .jpg, .jpeg. Wenn ich nun als erste Datei (userimage1) ein .gif uploaden möchte und mit userimage2 z.B. ein valides .jpg, dann erhalte ich für beide einen Fehler. Lade ich das .jpg als erstes (userimage1) hoch und das abzulehnende .gif als userimage2, geht es. Ebenso wenn das erste ein .jpg, das 2. ein .gif und alle nachfolgenden ein .jpg sind. Dann wird nur das ÜBER dem .gif als ok angesehen Das haut mich jetzt echt um

      Code:
      <?php
      
      if (isset($_FILES)) 
      {
      
          $fileerror = array();
          foreach($_FILES as $key => $file) 
          {
      
              if (!empty($file['name']) && ($file['error'] != 4)) 
              {
      
                  $limitedext = array(".jpg",".jpeg");
                  $extension  = strrchr($file['name'],'.');
                  $sizebytes  = "1000000";
                  $timestamp  = time();
      
                  if (!in_array($extension, $limitedext)) {
                      $fileerror['extension'] = "Das Bild ".$file['name']." ist kein .jpg";
                  }
      
                  if ($file['size'] > $sizebytes) { 
                      $fileerror['sizebytes'] = "Das Bild ".$file['name']." ist zu groß";
                  }
      
                  if (count($fileerror) == 0) {
                  // schauen was rauskommt
                  echo $key;
                  echo "
      ";
                  echo $file['size'];
                  echo "
      ";
                  echo $file['name'];
                  echo "
      ";
                  echo $file['type'];
                  echo "
      ";
                  echo $file['tmp_name'];
                  echo "
      ";
                  echo $file['error'];
                  echo "
      
      ";
      
                  } else { echo "Fehler!
      "; exit; }
      
              }
          }
      }
      
      ?>

      Kommentar


      • #4
        Okay, war mein Fehler. Der $fileerror-Array musste natürlich IN die foreach und nicht davor, jetzt klappt es Vielen Dank noch mal! :wink:

        Kommentar

        Lädt...
        X