Mehrere Bilder hochladen - CakePHP

regi

Grünschnabel
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:
//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']['img1_type'] = "gif";
 						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;
 						default:
 							$this->data['Ad']['img1_type'] = "";
 						break;
						}//end switch
				}//end if
				
				//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['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/>
		<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
 
Hi,
für meine CMS habe ich folgendes Multiple Upload geplant.
http://www.ajaxlines.com/ajax/stuff/article/upload_multiple_images_at_once_using_php.php

Muss man halt noch nach Wünsche anpassen. Ansonsten kann ich auch selber kurz ein Script basteln. Aber ich kann jetzt dein Formular nicht nachvollziehen. Ich hätte da mehrere Felder angelegt
Code:
      <form action="............." method="post" enctype="multipart/form-data" name="form1">
<p>Upload pictures<br>
          <br>
          <br>
          Picture index
          <input name="insid" type="text" title="Please enter some picture index" value="<?echo $id?>">
        </p>
        <table border="0" cellspacing="0" cellpadding="0" width="323">
          <tr>
            <td width="59">&nbsp;</td>
            <td width="264"> <b>picture</b></td>
          </tr>
          <tr>
            <td width="59">#1</td>
            <td width="264">
              <input name="pic1" type="file" size="70" >
            </td>
          </tr>
          <tr>
            <td width="59">#2</td>
            <td width="264">
              <input type="file" name="pic2" size="70" >
            </td>
          </tr>
          <tr>
            <td width="59">#3</td>
            <td width="264">
              <input type="file" name="pic3" size="70" >
            </td>
          </tr>
        </table>
        <br>
        <br>
        <input name="preloader" type="checkbox" style="        width : 13px;
        height : 13px;" value="da">
        Include preloader for BIG SWF<br>
        <br>
        <input type="reset" name="Submit4" value="Reset">
        <input name="Submit" type="submit" title="Upload and convert selected files" value="Next -&gt;">
      </form>

Edit:
oder machs wie hier nur pass es noch an deine Bildgröße und Bildformate an:
http://php.net/manual/de/features.file-upload.multiple.php
 
Zuletzt bearbeitet:
Zurück