Bild Upload mehrer Bilder

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

  • Bild Upload mehrer Bilder

    Hallo,
    ich weiß das es diese thema hier schon mehr als genug gibt aber ich habe auf den über 17 Seiten nichts passendes Gefunden was mir bei meinem Problem helfen kann.
    Ich wollte mit einem Script mehrer Bilder aufeinmal Uploaden.
    Hier ist nun mein Script:
    Formular
    PHP-Code:
    <form action="<? echo($PHP_SELF) ?>"  method="post"  enctype="multipart/form-data">

    <?
    echo "<input type='hidden' name='MAX_FILE_SIZE' value='512000'>
    <input type='hidden' name='maxbilder' value='".$_POST["maxbilder"]."'>";
    $i = 1;
    while ($i <= $_POST["maxbilder"]) {





    echo "<input type='file' name='userfile[]'>";
    $i++;
     }
    $_POST["maxbilder"] wurde vorher angegeben


    DAs 2te Script:
    PHP-Code:
    $i 1;
    $zahl $i -1;
    while (
    $i <= $_POST["maxbilder"]) {


    if(
    $userfile[$zahl]!=""){
        
    $grosse $userfile_size[$zahl];
        if (
    $grosse >= '512001')
     {
         echo 
    "Ihre Datei ist zu groß. Das Bild darf maximal 500kB(~0.48MB) betragen.";
     }else {
         
    $type $userfile_type[$zahl];

         if (
    eregi('image'$type)) {
         if (
    eregi('jpg'$type) or eregi('jpeg'$type) ) {
        
    $dateiname $userfile_name[$zahl];
    if(!
    is_uploaded_file($userfile[$zahl])){
    echo 
    "FEHLER".$i;                   #Die Fehler Ausgabe
    exit;
    }

    $uploadname="gallery/$dateiname".$i;
    move_uploaded_file($userfile[$zahl], $uploadname);
    printf("Die Datei <b>%s</b> wurde auf den Servere hochgeladen!<br>\n",
    $userfile_name[$zahl]); 
    Bei mir wird nun immer der Fehler ausgegeben. Siehe Makierung im Script.
    Hatte auch schon andere Methoden ausprobiert aber nicht half mir.

  • #2
    zeig mal print_r() von $userfile.
    und benutze kein PHP_SELF.

    Kommentar


    • #3
      Re: Bild Upload mehrer Bilder

      Und wo sollen die Werte für $userfile herkommen?
      (register_globals etwa auf on?)

      Nutze $_FILES. Und schaue dir dessen Struktur mittels print_r an.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Ja register_globals ist auf on
        Hab jetzt alle mit $_FILES gemacht und print_r($_FILES); gibt folgendes aus:

        Array ( [userfile] => Array ( [name] => Array ( [0] => bild.jpg ) [type] => Array ( [0] => image/pjpeg ) [tmp_name] => Array ( [0] => /srv/www/htdocs/web/phptmp/phpHcXUNv ) [error] => Array ( [0] => 0 ) [size] => Array ( [0] => 12969 ) ) )

        Kommentar


        • #5
          und was gibt in diesem fall deine "fehler ausgabe" aus?

          Kommentar


          • #6
            Immer noch das selbe: FEHLER
            Habe das da mit eingebaut:
            PHP-Code:
            if(!is_uploaded_file($_FILES['userfile'])){
            echo 
            "FEHLER".$i;
                
            print_r($_FILES);
            exit;

            Kommentar


            • #7
              und was ist mit $i?

              Kommentar


              • #8
                $i ist die Zahl aus der while Schleife

                Kommentar


                • #9
                  ich weiß was $i ist - du sollst nur sagen, was in der variable gespeichert wird, wenn es zum "fehler" kommt.

                  Kommentar


                  • #10
                    Du meinst also:
                    FEHLER1Array
                    ? Oder
                    Also es bricht gleich beim erstenmal ab. 1

                    Kommentar


                    • #11
                      Is doch klar warum der Fehler kommt. Weil dein $userfile[$zahl] keine hochgeladene datei ist. Und warum ist deine Ausgabe von $i ein Array?

                      Probier folgendes:

                      PHP-Code:
                      <!-- //Dein Formular:  !-->
                      <input type="hidden"name='MAX_FILE_SIZE" value="512000">
                      <input type="hidden" name="maxbilder" value="<?=$_POST["maxbilder"];?>">
                      <?
                      //Ich geh davon aus, das "maxbilder" von einer vorher gehenden Seite kommt, 
                      //die dem script  sagt wie viele Bilder hochgeladen werden sollen.

                      for ($i = 1; $i  <= $_POST["maxbilder"]; $i++) { ?>
                      <input type="file" name="bild<?=$i;?>"><br>
                      }
                      Und dann schickst du dein Formular an folgendes script
                      PHP-Code:
                      <?
                      for ($i=0; $i < $_POST["maxbilder"]; $i++) {

                      /* 
                      Blödsinn, wenn die Datei größer ist als MAXFILESIZE, wird sie ja gar nicht erst hochgeladen.
                      if($userfile[$zahl]!=""){
                          $grosse = $userfile_size[$zahl];
                          if ($grosse >= '512001')
                       {
                           echo "Ihre Datei ist zu groß. Das Bild darf maximal 500kB(~0.48MB) betragen.";
                      } */

                      $name = 'bild' . $i;

                      if(is_uploaded_file($_FILES[$name])) {

                      $uploadname= 'gallery/' . $_FILES[$name]['name'];
                      if(!move_uploaded_file($_FILES[$name]['tmp_name'], $uploadname)) {
                      echo 'Fehler bei Bild Nr. ' . $i . '(' . $_FILES[$name]['name'] . ')';
                      exit;
                      }
                      }

                      echo 'Alle Bilder wurden wunderbar hochgeladen und gespeichert:<br>'
                      for ($i=0 < $_POST["maxbilder"]; $i++) {?>
                      <img src="gallery/<?=$_FILES[$name]['name'];?>"><br>
                      <? } ?>
                      Ohne es getestet zu haben, sollte aber so ähnlich funktionieren. (Esist schon spät. bzw. früh! )

                      Den rest kannst du dir hoffentlich denken und dementsprechend anpassen. *gähn*

                      Gute Nacht!
                      Zuletzt geändert von haSta; 26.02.2006, 05:07.
                      Der Mensch ist ein Tier das zuviel denkt!

                      Kommentar


                      • #12
                        Habe mir dein Script angeschaut und auch ausprobiert und abgeändert, dennoch kommt der selbe Fehler.

                        Wenn ich jetzt
                        PHP-Code:
                        if(!is_uploaded_file($_FILES[$name])){
                        echo 
                        "FEHLER";
                        exit;

                        Rausnehme dann funktioniert das ganze. Aber brauche ich das nicht?
                        is_uploaded_file


                        Blödsinn, wenn die Datei größer ist als MAXFILESIZE, wird sie ja gar nicht erst hochgeladen.
                        Habe irgendwo gelesen das man dieses umgehen kann und somit größere Datei hochladen kann

                        Kommentar


                        • #13
                          Sicher kann man die Formular Begrenzung umgehen, dann bietet das doch schon etwas mehr Sicherheit, auch die Überprüfung auf den richtigen file type ist da schon wichtig, da hast du definitiv recht.

                          Bist du sicher das die Datei nicht größer war als 512 KB?
                          Wo hostest du das ganze? Kann man sich das ansehen?

                          probier mal die prüfung auf:
                          PHP-Code:
                          if(!is_uploaded_file($_FILES[$name]['tmp_name'])){
                          echo 
                          "FEHLER";
                          exit;

                          Der Mensch ist ein Tier das zuviel denkt!

                          Kommentar


                          • #14
                            Jetzt geht es. Das tmp_name fehlte.

                            Wo hostest du das ganze? Kann man sich das ansehen?
                            Was meinst du damit?

                            Kommentar


                            • #15
                              Ja, ich war heute morgen doch etwas verpennt. Ich meinte bei welchem Webspace provider du bist und ob man sich das ergebnis mal ansehen kann, aber da es ja funktioniert... Viel spass damit!
                              Der Mensch ist ein Tier das zuviel denkt!

                              Kommentar

                              Lädt...
                              X