无法在codeigniter中插入多个带有多个输入的图像

时间:2017-08-24 11:47:06

标签: codeigniter

我无法在codeigniter中插入多个带有多个输入的图像,我努力尝试,但无法获取图像。

以下是我的代码。任何人都可以指导我正确的方向吗?

HTML

<input type="file" name="item_img[]">
<input type="file" name="item_img[]">
<input type="file" name="item_img[]">
<input type="file" name="item_img[]">

CONTROLLER

if($this->input->post('save')=='save')
{
    $count = count($_FILES['item_img']['size']);
    for($i=0; $i<$count; $i++)
    {

        $config['upload_path'] = './img/items/';
        $config['allowed_types']= 'gif|jpg|png';
        $this->upload->initialize($config);
        $count = count($_FILES['item_img']['size']);
        foreach($_FILES as $key=>$value)
        $_FILES['userfile']['name']=$value['name'][$i];
        $_FILES['userfile']['type']    = $value['type'][$i];
        $_FILES['userfile']['tmp_name'] = $value['tmp_name'][$i];
        $_FILES['userfile']['error']       = $value['error'][$i];
        $_FILES['userfile']['size']    = $value['size'][$i];  
        $this->load->library('upload', $config);
        $this->upload->do_upload();
        $data = $this->upload->data();
        $names='img/items/'.$data['file_name'];


        $insertdata2=array( 'i_img'=>$names, 'createdon'=>date("Y-m-d H:i:s") );
        $this->model->insertData('item_info_master',$insertdata2);

    }
}

MODEL

public function insertData($table,$data)
{
    $this->db->insert($table, $data);
}

3 个答案:

答案 0 :(得分:0)

您可以从一个输入中获取所有图像

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text">

<table class="my_table">
  <thead>
    <tr>
      <th>
        First Name
      </th>
      <th>Last Name</th>
      <th>Text</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>David</td>
      <td>Johnman</td>
      <td>Here is some text</td>
    </tr>
    <tr>
      <td>Felix</td>
      <td>Mann</td>
      <td>Cake</td>
    </tr>
    <tr>
      <td>Peter</td>
      <td>Pan</td>
      <td>Green green grass of home</td>
    </tr>
</table>

<br><br>

<table class="my_table">
  <thead>
    <tr>
      <th>
        First Name
      </th>
      <th>Last Name</th>
      <th>Text</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>David</td>
      <td>Stone</td>
      <td>Here is text</td>
    </tr>
    <tr>
      <td>Trevor</td>
      <td>Barry</td>
      <td>Cake</td>
    </tr>
    <tr>
      <td>Xylophone</td>
      <td>Greet</td>
      <td>Green green grass of home</td>
    </tr>
</table>

你可以使用$ _FILES

从php中检索它

答案 1 :(得分:0)

我看到一些问题。我首先建议您将输入切换为:

<input type="file" name="item_img" multiple="multiple" />

如果你不能这样做,那么你需要在控制器中以不同的方式处理PHP循环以获取这些图像。以下是一个问题/答案, Uploading multiple photos using with same name

除了循环外,您还需要在控制器中调整几项内容。对于初学者来说,$_FILES['item_img']['size']正在获取文件本身的大小(例如:5MB),而不是文件的数量。所以count变量永远不会起作用。

您也没有正确加载上传库和配置。请查看此问题/答案 Upload multiple files in CodeIgniter ,以获取有关如何加载配置,然后处理多个图像的一个很好的示例。

希望这会有所帮助。

答案 2 :(得分:0)

试试这个:

<input type="file" name="gallery[]" multiple>

和php代码:

if(!is_dir("uploads/gallery/".$id."/")) {
  mkdir("uploads/gallery/".$id."/");
}
foreach($_FILES['gallery']['name'] as $key=>$val){
  //upload and stored images
  $target_dir = "uploads/gallery/".$id."/";
  $target_file = $target_dir.$_FILES['gallery']['name'][$key];
  $type = 'image';
  if(move_uploaded_file($_FILES['gallery']['tmp_name'][$key],$target_file)){
    $this->model->addGallery($id,$target_file,$type,$thumbnail);
    //$images_arr[] = $target_file;
  }
}

欢迎光临