Quiero subir 2 imágenes por separado. tengo una condición en la que necesito cargar el archivo y en algún momento ambos y en algún momento solo la imagen, necesito usar un botón separado para diferenciar la imagen y el archivo.
mis codigos son
<form action="http://localhost/cod_login/club/test2" enctype="multipart/form-data" method="post" accept-charset="utf-8"> <input type="file" name="userfile" size="20"> <input type="file" name="userfile" size="20"> <input type="submit" name="submit" value="upload"> </form>este es el controlador
function ddoo_upload(){ $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } }Si desea 2 botones de archivo diferentes, debe darles nombres diferentes.
<form action="" enctype="multipart/form-data" method="post" accept-charset="utf-8"> <input type="file" name="userfile1" size="20"> <input type="file" name="userfile2" size="20"> <input type="submit" name="submit" value="upload"> Entonces tienes que modificar tu función ddoo_upload() como a continuación: -
function ddoo_upload($filename){ $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); if ( ! $this->upload->do_upload($filename)) { $error = array('error' => $this->upload->display_errors()); return false; // $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); return true; //$this->load->view('upload_success', $data); } } NOTA: - Estamos pasando $filename como variable y luego usándolo para cargar diferentes archivos.
Ahora, en el controlador donde se redirige la acción del formulario, debe escribir el código a continuación.
if ($this->input->post('submit')){ if (isset($_FILES['userfile1']) && $_FILES['userfile1']['name'] != ''){ $file1 = $this->ddoo_upload('userfile1'); } if (isset($_FILES['userfile2']) && $_FILES['userfile2']['name'] != ''){ $file2 = $this->ddoo_upload('userfile2'); } }Este es el código del controlador que he solicitado para cargar dos imágenes en codeigniter
índice de función pública () {
if($this->input->post('Submit')){ //-----------Image File Section Start Here -----------// $config['upload_path'] = './uploads/'; // Directory $config['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed $config['max_size'] = '30720'; //Max Size $config['encrypt_name'] = TRUE; // For unique image name at a time $this->load->library('upload', $config); //File Uploading library $this->upload->do_upload('userfile'); // input name which have to upload $video_upload=$this->upload->data(); //variable which store the path //--------------End of Image File Section------------------------// //---------Thumbnail Image Upload Section Start Here -----------// $config2['upload_path'] = './thumb/'; // Directory $config2['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed $config2['max_size'] = '30720'; //Max Size $config2['encrypt_name'] = TRUE; // For unique image name at a time $this->upload->initialize($config2); //we can not use upload library again and again it will not initialize again and again so thats why i have used initialize $this->upload->do_upload('txt_thumb'); // File Name $thumbnail_upload=$this->upload->data(); // store the name of the file //--------End of Thumbnail Upload Section-----------// $date=date("dmY"); // Store current date in variable // Here the database query to insert $data = array( 'parent_id'=> $this->input->post('txt_parent'), 'cat_id' => $this->input->post('txt_category'), 'title'=> $this->input->post('txt_title'), 'status' => $this->input->post('txt_status'), 'featured' => $thumbnail_upload['file_name'], 'image' => $video_upload['file_name'], 'time'=>$date ); $sql_ins= $this->Insimage->insertimage($data); if($sql_ins) { $data['Success'] = "Image has been succesfully inserted!!"; }}
Este código seguramente funcionará para subir 2 imágenes ¡Disfrútalo! :-)
1- crea image_uploader en tu controlador
function image_uploader($filename){ $config['upload_path'] = './assets/uploads/setting/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '2000'; $config['max_height'] = '2000'; $this->load->library('upload', $config); if ( ! $this->upload->do_upload($filename)) { $error = array('error' => $this->upload->display_errors()); } else { $data_foto = $this->upload->data(); return $data_foto['file_name']; }esta función devuelve el nombre del archivo de imagen, si la carga se realizó correctamente
2- llamar a image_uploader en otra función (acción de formulario a la vista)
public function slideroneupload() { $this->site_security->_make_sure_is_admin(); $data = $this->input->post(); $sliderimage = $this->image_uploader('image'); $thumbimage = $this->image_uploader('thumb'); // save all data to database . . . }