Mehrere Bilder uploaden

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

  • Mehrere Bilder uploaden

    Hallo!
    Ich gerade ein Script geschrieben, mit welchem ich ein Bild uploaden, und verkleinern kann. Jetzt möchte ich es umschreiben,
    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <title>upload</title>
    </head>
    <body>
    <form name="upload" action="upload_script.php" method="post" enctype="multipart/form-data" accept="image/    *.jpeg *.jpg *.jpe *.png *.gif" >
    <?php
    for($ii =0$ii 10$ii++)
    {
    echo 
    "<input type='file' name='datei[".$ii."]' /><br>\n";
    }
    ?>
    <input type="submit" name="up_sb">
    </form>
    </body>
    </html>
    Mein PHP-Script:
    PHP-Code:
    <?
    if(isset($_POST['up_sb']))
    {
    $asdf = $_POST['datei'];
    echo $asdf;
    echo "test";
    }


    if(is_uploaded_file($_FILES['datei']['tmp_name']))
    {
        /*____________________________________________
        
                        Set the options
        ______________________________________________*/
        $width = 500; //<-width of the resized image
        $height = 600;    //<- height of the resized image
        $filename = $_FILES['datei']['tmp_name']; //<- the uploaded image temp-name        
        $path = "bild_test/"; //<- The path where the image should be saved
        $quality = 100;
        $files_par = "datei";

        // Set the chars which shuld be replaced 
        $search_pattern = array("/ /","/ä/","/ü/","/ö/","/-/");
        $replace_pattern = array("_","ae","ue","oe","_");

        $type = getimagesize($filename);
        // Creates the filename and replaces the whitespaces with an underscore
        $f_name = preg_replace($search_pattern,$replace_pattern,
    strtolower(substr($_FILES[$files_par]['name'],0,strrpos
    ($_FILES[$files_par]['name'],"."))));


        if ($dir_handler = opendir($path)) 
        {
           while (false !== ($file = readdir($dir_handler))) //<- reads the files
           {
               $file = substr($file,0,strrpos($file,"."));
                 if($file == $f_name) //<- if the file exists in the 
    directory a suffix will be added
                 {
                     $suffix = substr($file,-3);
                     settype($suffix,"integer"); //<- gets the 
    number of the suffix f.e. "ds2" => 2
                     if($suffix == 0)
                     {
                         $f_name.="_001";
                     }
                     else //<- adds the suffix if the suffix-number is greater than 1
                     {
                     $suffix++;
                     $suffix = str_pad($suffix,3,0,STR_PAD_LEFT);
                     $suffix = "_".$suffix;
                   $f_name = substr($f_name,0,strlen($f_name)-4).$suffix;
                     }
                 }

           }
       closedir($dir_handler);
      }

        
        // Get new dimensions
        list($width_orig, $height_orig) = getimagesize($filename);
        if($width && ($width_orig < $height_orig)) 
        {
           $width = ($height / $height_orig) * $width_orig;
        } 
        else 
        {
           $height = ($width / $width_orig) * $height_orig;
        }    
            


        if($type[2] == 1) //<- GIF Image
        {
            echo "Gif datei";
        } 

        if($type[2] == 2) // <- JPEG Image
        {
        /*    // Content type
            header('Content-type: image/jpeg');
            // Resample */
            $image_tmp = imagecreatetruecolor($width, $height);
            $image = imagecreatefromjpeg($filename);
            imagecopyresampled($image_tmp, $image, 0, 0, 0, 0, 
    $width, $height, $width_orig, $height_orig);

                // Output
            $flag = @imagejpeg($image_tmp,$path.$f_name.".jpg", $quality);
            if($flag == 1)
            {
                echo "Das Bild wurde upgeloadet!";
            }
            else
            {
                echo "Ein Fehler ist aufgetreten!";
            }
        }
        if($type[2] == 3)
        {
            echo "png file";
        }
    }
    ?>
    Zuletzt geändert von Kisi; 04.08.2006, 00:20.

  • #2
    ein blick ins $_FILES mittels print_r() verschafft klarheit.

    Kommentar


    • #3
      ich tipp mal ganz blind dass die namen der felder zum hochladen nich so aussehen: bild[]

      is nur geraten aber da des script vorgefertigt is kanns ja sein

      Kommentar


      • #4
        Ähhmm... wenn ich das mach, dann passiert genau das wie vorher. nämlich garnichts. Wenn du damit meinst, dass ich da ein Array übergerbe... das weis ich schon, nur müsste es mir bei

        $asdf = $_POST['datei'];
        echo $asdf;

        zumindest isArray() oder sowas ausgeben, aber es passiert ja gar nichts.

        Kommentar


        • #5
          neee ich glaub nich das es als array an $_POST übergeben wird...
          schau in phpinfo(); ich denke es steht als $_POST[datei1] usw

          Kommentar


          • #6
            wie gesagt, $_FILES...

            Kommentar


            • #7
              hab grad eins meiner skripte rausgekramt:

              PHP-Code:
              //html teil
              <input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="1000000">
                   <
              input name="pic1" type="file" >
                   <
              br>
                   <
              input name="pic2" type="file">
                   <
              br>
                   <
              input name="pic3" type="file">
                   <
              br>
                   <
              input name="pic4" type="file">
              //php teil
              $bilder= array(
                                    
              => $pic1,
                                  
              => $pic2,
                                  
              => $pic3,
                                  
              => $pic4,
                                  );
                  
              $i=1;
                
              $path='/bilder/';
                      foreach(
              $bilder as $v){      
              copy($v,$_FILES['pic'.$i]['name']);
                                                  
              $x=$_FILES['pic'.$i]['name'];
              mysql_query("UPDATE spot SET bild$i='$x' WHERE 
              spotname='
              $spotname';"); 
                  
              $i+=$i;
                    }; 
              edit: ups hab wohl $_POST und $_FILES n bissi vergoogelt
              Zuletzt geändert von BugBite; 04.08.2006, 00:14.

              Kommentar


              • #8
                das ist ein relativ schlechtes beispiel.
                baue lieber von anfang an auf arrays.

                übrigens, es ist oscar-verdächtig, wie du den zähler $i hochsetzst.

                Kommentar


                • #9
                  aus meinem ersten php skript seit dem hab ich nicht mehr mit files gearbeitet =P

                  Kommentar


                  • #10
                    Ahh... jetzt bekomme ich mit print_r() sogar eine Ausgaeb... da sind ja lauter Arrays

                    Naja, das werde ich mir wohl morgen geben... heut will mein Hirn nicht mehr denken.

                    Kommentar


                    • #11
                      Hallo! So,... ich habs jetzt entlich geschafft. Allerdings
                      kommt es mir so vor, als ob das script noch ein bisschen lahmt...
                      könnt ihr mir vielleicht verbesserungsvorschläge geben.

                      hier nochmal das ganze Script:
                      PHP-Code:
                      <?

                      $files_sum = count($_FILES['datei']['tmp_name']); //<= counts the uploaded files
                      for($x = 0; $x < $files_sum; $x++)
                      {
                              if($_FILES['datei']['size'][$x] == 0) //<- If the uploadfield is empty one cycle will be omitted
                                  continue; 
                          if(is_uploaded_file($_FILES['datei']['tmp_name'][$x]))
                          {
                      }

                            /*____________________________________________
                              
                                              Set the options
                              _____________________________________________*/
                              $width = 500; //<-width of the resized image
                              $height = 600;    //<- height of the resized image
                              $filename = $_FILES['datei']['tmp_name'][$x]; //<- the uploaded image temp-name        
                              $path = "bild_test/"; //<- The path where the image should be saved
                              $quality = 100;
                              $files_par = "datei";
                              $maxsize = "";
                          
                              // Set the chars which shuld be replaced 
                              $search_pattern = array("/ /","/ä/","/ü/","/ö/","/-/");
                              $replace_pattern = array("_","ae","ue","oe","_");


                          
                              $type = getimagesize($filename);
                              // Creates the filename and replaces the unwanted chars
                              $f_name = preg_replace($search_pattern,$replace_pattern,
                      strtolower(substr($_FILES[$files_par]['name'][$x],
                      0,strrpos($_FILES[$files_par]['name'][$x],"."))));
                          
                          
                              if ($dir_handler = opendir($path)) 
                              {
                                 while (false !== ($file = readdir($dir_handler))) //<- reads the files
                                 {
                                     $file = substr($file,0,strrpos($file,"."));
                                       if($file == $f_name) //<- if the file exists in the directory a suffix will be added
                                       {
                                           $suffix = substr($file,-3);
                                           settype($suffix,"integer"); //<- gets the number of the suffix f.e. "ds2" => 2
                                           if($suffix == 0)
                                           {
                                               $f_name.="_001";
                                           }
                                           else //<- adds the suffix if the suffix-number is greater than 1
                                           {
                                           $suffix++;
                                           $suffix = str_pad($suffix,3,0,STR_PAD_LEFT);
                                           $suffix = "_".$suffix;
                                         $f_name = substr($f_name,0,strlen($f_name)-4).$suffix;
                                           }
                                       }
                          
                                 }
                             closedir($dir_handler);
                            }
                          
                              
                              // Get new dimensions
                              list($width_orig, $height_orig) = getimagesize($filename);
                              if($width && ($width_orig < $height_orig)) 
                              {
                                 $width = ($height / $height_orig) * $width_orig;
                              } 
                              else 
                              {
                                 $height = ($width / $width_orig) * $height_orig;
                              }    
                              if($type[2] == 1) //<- GIF Image
                              {
                                  echo "Gif datei";
                              } 
                          
                              if($type[2] == 2) // <- JPEG Image
                              {
                                  $image_tmp = imagecreatetruecolor($width, $height);
                                  $image = imagecreatefromjpeg($filename);
                                  imagecopyresampled($image_tmp, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
                      // Output
                                  $flag = @imagejpeg($image_tmp,$path.$f_name.".jpg", $quality);
                                  if($flag == 1)
                                  {
                                      echo "Das Bild \"".$f_name.".jpg\" wurde upgeloadet!<br>";
                                  }
                                  else
                                  {
                                      echo "Ein Fehler ist aufgetreten!";
                                  }
                              }
                              if($type[2] == 3)
                              {
                                  echo "png file";
                              }
                          }
                      ?>
                      Ähhhmmm sorry wegen dem horizontalen Balken, aber ich bekomm den einfach nicht weg.
                      Zuletzt geändert von Kisi; 04.08.2006, 14:42.

                      Kommentar


                      • #12
                        Hallo!
                        Ich überlege mir jetzt, ob ich das Script in eine Klasse umschreiben soll. Allerdings stellt sich die Frage, welchen Vorteil ich mit einer Klasse im gegensatz zu einer function habe???

                        Kommentar


                        • #13
                          höchstwahrscheinlich gar keinen.

                          Kommentar

                          Lädt...
                          X