Ankündigung

Einklappen
Keine Ankündigung bisher.

mehrere Bilder uploaden - CakePHP

Einklappen

Neue Werbung 2019

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

  • mehrere Bilder uploaden - CakePHP

    Hallo Community!

    Ich habe ein Problem mit meinem Bilderupload. Ich versuche mehrere Auswahlfelder in meinem Formular einzubauen und habe deshalb in meiner MySQL Datenbank mehrere Felder eingefügt, die ein Bild enthalten dürfen
    (img1_type, img2_type, img3_type,img4_type und img_type).

    Daraufhin habe ich dann meinen Code so angepasst (ads_controller.php):

    PHP-Code:
    //and file upload
                    
    $root WWW_ROOT;

                    if(
    $_FILES['file']['tmp_name'])
                     {
                         switch ( 
    $_FILES['file']['type'] )
                         {
                             case 
    "image/gif":
                            
    move_uploaded_file($_FILES['file']['tmp_name'], $root."upload/".$last_id.".gif");
                                 
    chmod ($root."upload/".$last_id.".gif"0755);
                             break;
                            case 
    "image/jpeg":
                                 
    move_uploaded_file($_FILES['file']['tmp_name'], $root."upload/".$last_id."_full.jpeg");
                                 
    chmod ($root."upload/".$last_id.".jpeg"0755);
                                 
    chmod ($root."upload/".$last_id."_full.jpeg"0755);
                             break;
                             case 
    "image/png":
                                 
    move_uploaded_file($_FILES['file']['tmp_name'], $root."upload/".$last_id."_full.png");
                                 
    chmod ($root."upload/".$last_id."_full.png"0755);
                                 
    chmod ($root."upload/".$last_id.".png"0755);
                             break;
                             default:
                                 
    $this->set("error","2"); //File not allowed
                             
    break;
                         }
                     }

                    if(isset(
    $_FILES['file2']['tmp_name']))
                     {
                         switch ( 
    $_FILES['file2']['type'] )
                         {
                             case 
    "application/msword":
                                 
    move_uploaded_file($_FILES['file2']['tmp_name'], $root."upload/".$last_id.".doc");
                                 
    chmod ($root."upload/".$last_id.".doc"0755);
                             break;
                            case 
    "application/pdf":
                                 
    move_uploaded_file($_FILES['file2']['tmp_name'], $root."upload/".$last_id.".pdf");
                                 
    chmod ($root."upload/".$last_id.".pdf"0755);
                             break;
                             default:
                                 
    $this->set("error","2"); //File not allowed
                             
    break;
                         }
                     }
                    
                    if(isset(
    $_FILES['file3']['tmp_name']))
                     {
                         switch ( 
    $_FILES['file3']['type'] )
                         {
                             case 
    "image/jpg":
                                 
    move_uploaded_file($_FILES['file3']['tmp_name'], $root."upload/".$last_id.".jpg");
                                 
    chmod ($root."upload/".$last_id.".jpg"0755);
                             break;
                            case 
    "image/gif":
                                 
    move_uploaded_file($_FILES['file3']['tmp_name'], $root."upload/".$last_id.".gif");
                                 
    chmod ($root."upload/".$last_id.".gif"0755);
                             break;
                            case 
    "image/png":
                                 
    move_uploaded_file($_FILES['file']['tmp_name'], $root."upload/".$last_id."_full.png");
                                 
    chmod ($root."upload/".$last_id."_full.png"0755);
                                 
    chmod ($root."upload/".$last_id.".png"0755);
                             break;
                             default:
                                 
    $this->set("error","2"); //File not allowed
                             
    break;
                         }
                     } 
    Dann habe ich mein Formular so bearbeitet (add.tpl):

    Code:
    <form method="post" enctype="multipart/form-data" name="form" action="{$html->url('/ads/add')}"/>
    <input type="hidden" value="500000" name="max_file_size" />
    		<input type="file" style="width: 250px;" name="file" /><br/>
    		<input type="hidden" value="500000" name="max_file_size" />
    		<input type="file" style="width: 250px;" name="file3" /><br/>
    		<input type="hidden" value="500000" name="max_file_size" />
    		<input type="file" style="width: 250px;" name="file4" /><br/>
    		<font color="#888888">nur GIF-, JPG- und PNG-Bilder mit max. 200 KB</font>
    Aber irgendwie funktioniert mein Upload nur mit einem Bild.Selbst wenn ich 3 Bilder einfüge, dann wird das 2. davon eingefügt. Trage ich nur 2 Bilder ein, erscheint dass Bild, dass ich als erstes eingefügt habe.

    Was stimmt hier nicht? Habe ich etwas übersehen? Leider konnte ich im Forum und in Google nichts finden, oder hab einfch falsch gesucht -.-

    Ich hoffe jemand kann mir hier helfen...

    Liebe Grüße
    regi


  • #2
    Du darfst nicht alle Felder gleich benennen, allenfalls file[], sodass du ein Array erhältst (habe ich bei Bilduploads allerdings noch nicht ausprobiert).
    Außerdem stellt sich mir die Frage, warum du für mehrere Bilder mehrere Spalten anlegst. Viel sinnvoller und skalierbarer wäre es, hier mit einer 1:n-Beziehung zweier Tabellen zu arbeiten.
    Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

    Kommentar


    • #3
      Leider stehe ich derzeit auf dem Schlau, tut mir Leid
      Also so wie ich es jetzt verstanden habe, muss ich meine PHP wohl mit:

      PHP-Code:
      <?php $images= array("gif""jpg""png"); ?>
      bearbeiten? Das ist alles immer noch etwas verwirrend für mich, aber für mein Projekt einfach sehr wichtig

      Und in meiner Datenbank habe ich jetzt die Tabelle "images" angelegt. Soll diese dann die jeweiligen Datentypen erhalten, wie oben aufgelistet und in die Tabelle in der ich früher die vielen Spalten angelegt habe, hinverweisen?

      Kommentar


      • #4
        Mhh.. Du sagst, dass man die Felder nicht alle gleich bennen darf. So sieht das bei mir aus und jedes Feld hat auch einen anderen Namen, oder verwechsel ich da etwas?

        PHP-Code:
        //MySQL inserts
                        
        if($_FILES['file']['tmp_name'])
                        {
                            switch ( 
        $_FILES['file']['type'] )
                             {
                                 case 
        "image/gif":
                                     
        $this->data['Ad']['img_type'] = "gif";
                                 break;
                                case 
        "image/jpeg":
                                     
        $this->data['Ad']['img_type'] = "jpeg";
                                 break;
                                 case 
        "image/png":
                                     
        $this->data['Ad']['img_type'] = "png";
                                 break;
                                 case 
        "image/jpg":
                                     
        $this->data['Ad']['img_type'] = "jpg";
                                 break;
                                 default:
                                     
        $this->data['Ad']['img_type'] = "";
                                 break;
                                }
        //end switch
                        
        }//end if

                        
        if($_FILES['file3']['tmp_name'])
                        {
                            switch ( 
        $_FILES['file3']['type'] )
                             {
                                 case 
        "image/gif":
                                     
        $this->data['Ad']['img_type'] = "gif";
                 
        1                break;
                                case 
        "image/jpeg":
                                     
        $this->data['Ad']['img1_type'] = "jpeg";
                                 break;
                                 case 
        "image/png":
                                     
        $this->data['Ad']['img1_type'] = "png";
                                 break;
                                 case 
        "image/jpg":
                                     
        $this->data['Ad']['img1_type'] = "jpg";
                                 break;
                                                         }
        //end switch
                        
        }//end if 
        LG
        regi

        Kommentar


        • #5
          Die Eingabefelder!

          <input type="file" style="width: 250px;" name="file" /><br/>
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zitat von Manko10 Beitrag anzeigen
            Du darfst nicht alle Felder gleich benennen, allenfalls file[], sodass du ein Array erhältst (habe ich bei Bilduploads allerdings noch nicht ausprobiert).
            Keine Sorge das geht auch damit wunderbar, ich habe mir selber so ein Script geschrieben was genau das macht.

            Gruß litter
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar


            • #7
              Code:
              <form method="post" enctype="multipart/form-data" name="form"  action="{$html->url('/ads/add')}"/>
              <input type="hidden" value="500000" name="max_file_size" />
              <input type="file" style="width: 250px;" name="file[]"  /><br/>
              <input type="file" style="width: 250px;" name="file[]"  /><br/>
              <input type="file" style="width: 250px;" name="file[]"  /><br/>
              So sollte dein Formular aussehen. Da max_file_size bei dir mehrmals mit dem selben Name und dem selben Inhalt vorkommt brauchst dus auch einmal hinzu schreiben.
              Im PHP-Code kannste dann einfach mit einer FOR oder FOREACH - Schleife über $_FILES['file'][$i] iterieren und machen was du willst
              "My software never has bugs, it just develops random features."
              "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

              Kommentar


              • #8
                Vielen Dank @ Paul.Schramenko!
                Ich muss nur noch etwas über FOR oder FOREACH - Schleife lesen, um das dann auszuführen, wie du es schreibst...

                Kommentar

                Lädt...
                X