简体   繁体   English

使用codeigniter上传多个不同名称的图像

[英]upload multiple image with different name using codeigniter

I am trying to upload the three images from html form,with three different names.But it shows error 我正在尝试从html表单上载三个名称不同的三个图像。但是显示错误

$config['upload_path']          = './uploads/';
                $config['allowed_types']        = 'gif|jpg|png';
                $config['file_name']            =  $this->input->post('mobile_name').'_front.jpg';
                $config['overwrite']            =  TRUE;

                $this->load->library('upload', $config);


                if ($this->upload->do_upload('files'))
                {
                        $_POST['mobile_img1']= $this->upload->data()['file_name'];
                }
                else
                {
                      echo "image upload fails";
                      exit();
                }

This my codeigniter code to upload one image. 这是我的代码点火器代码,用于上传一张图片。

I have three image input field in html code 我在html代码中有三个图像输入字段

 <div class="row">
                                  <div class="col-md-4 col-md-offset-4">

                                    <div class="form-group">
                                                        <label class="control-label">Mobile Image Front</label>
                                                        <input type="file" name="mobile_img1" class="filestyle" data-placeholder="No file">
                                    </div>
                                    <div class="form-group">
                                                        <label class="control-label">Mobile Image Back</label>
                                                        <input type="file" name="mobile_img2" class="filestyle" data-placeholder="No file">
                                    </div>
                                    <div class="form-group">
                                                        <label class="control-label">Mobile Image Side</label>
                                                        <input type="file" name="mobile_img3" class="filestyle" data-placeholder="No file">
                                    </div>

                                  </div>
                              </div> 

in this html field i need to upload the first input as mobilename_front.jpg , second as mobilename_back.jpg and third as mobilename_side.jpg and also i need to upload this names in db.Give some ideas to implement this, 在此html字段中,我需要将第一个输入上载为mobilename_front.jpg,第二个上载为mobilename_back.jpg,第三个上载为mobilename_side.jpg,并且我还需要在db中上载此名称。

View Files 查看文件

<div class="row">
<div class="col-md-4 col-md-offset-4">
<form method="POST" action="<?php echo site_url('my-controller/file_upload');?>" enctype='multipart/form-data'>
<div class="form-group">
                    <label class="control-label">Mobile Image Front</label>
                    <input type="file" name="mobile_img[]" class="filestyle" data-placeholder="No file">
</div>
<div class="form-group">
                    <label class="control-label">Mobile Image Back</label>
                    <input type="file" name="mobile_img[]" class="filestyle" data-placeholder="No file">
</div>
<div class="form-group">
                    <label class="control-label">Mobile Image Side</label>
                    <input type="file" name="mobile_img[]" class="filestyle" data-placeholder="No file">
</div>
  <input type="submit" value="upload"></form>
</div>
</div>

My controller: 我的控制器:

<?php
class My_Controller extends CI_Controller {
public function __construct() {
  parent::__construct();
  $this->load->library('upload');
}
public function file_upload(){
  $files = $_FILES;
  $cpt = count($_FILES['mobile_img']['name']);
  for($i=0; $i<$cpt; $i++)
  {
      $mobileView=(($i == 0)?"_front":(($i == 1)?"_back":"_side")); //Here i assign first image(i = 0) as _front, second image(i = 1) as _back,third image(i = 2) as _side
      $_FILES['mobile_img']['name']= $files['mobile_img']['name'][$i].$mobileView.time();// time() for time in seconds becauze we may need if same name uploaded file name
      $_FILES['mobile_img']['type']= $files['mobile_img']['type'][$i];
      $_FILES['mobile_img']['tmp_name']= $files['mobile_img']['tmp_name'][$i];
      $_FILES['mobile_img']['error']= $files['mobile_img']['error'][$i];
      $_FILES['mobile_img']['size']= $files['mobile_img']['size'][$i];
      $this->upload->initialize($this->set_upload_options());
      $this->upload->do_upload();
      $fileName = $_FILES['mobile_img']['name'];
      $images[] = $fileName;
  }
  $fileName = implode(',',$images);
  $this->my_model->upload_image($fileName);
}
private function set_upload_options()
{ 
// upload an image options
  $config = array();
  $config['upload_path'] = './upload/'; //give the path to upload the image in folder
  $config['allowed_types'] = 'gif|jpg|png';
  $config['max_size'] = '0';
  $config['overwrite'] = FALSE;
  return $config;
}
}
?>

My model Function: 我的模型功能:

<?php
class My_Model extends CI_Model {
public function upload_image($fileName)
{
    if($filename!='' ){
     $filename1 = explode(',',$filename);
      foreach($filename1 as $file){
           $file_data = array(
              'name' => $file,
              'datetime' => date('Y-m-d h:i:s')
              );
           $this->db->insert('uploaded_files', $file_data);
    }
 }
 }
}
?>
<?php echo form_open('admin/product_insert');?>
     <div class="row form-group">
        <div class="col-lg-2">
            Image 1
        </div>
        <div class="col-lg-5">
           <input type="file" class="form-control" name="photo1" required>
        </div>
    </div>
    <div class="row form-group">
       <div class="col-lg-2">
         Image 2
    </div>
    <div class="col-lg-5">
        <input type="file" class="form-control" name="photo2" Required>
   </div>
</div>
    <div class="row form-group">
        <div class="col-lg-2">
            Image 3
        </div>
        <div class="col-lg-5">
            <input type="file" class="form-control" name="photo3" Required>
        </div>
    </div>
<input type="submit">
public function product_insert(){
                    $pro=$this->input->post('productName');
                    for($i=0;$i<=3;$i++){
                        $config['upload_path'] = './images/';
                        $config['allowed_types'] = 'gif|jpg|png';
                        $config['file_name']=$pro.$i;
                        $this->load->library('upload',$config);
                        $this->upload->do_upload('photo'.$i);
                        $this->upload->initialize($config);
                    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM