在 Codeigniter 上上传多张图片

时间:2021-06-21 05:23:20

标签: php codeigniter

我愿意在CodeIgniter上上传多张图片,我只知道单张图片上传。 这是我的模型上的代码:

private function _uploadImage()
{
    $config['upload_path']          = './upload/product/';
    $config['allowed_types']        = 'gif|jpg|png';
    $config['file_name']            = $this->product_id;
    $config['overwrite']            = true;
    $config['max_size']             = 1024; // 1MB

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

    if ($this->upload->do_upload('image')) {
        return $this->upload->data("file_name");
    }
    
    return "default.jpg";
}

你能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:0)

试试这个: 查看:

<input type='file' name='files[]' multiple=""> <br/><br/>
<input type='submit' value='Upload' name='upload' />

控制器:

public function uploadImage() { 
   
      $data = [];
   
      $count = count($_FILES['files']['name']);
    
      for($i=0;$i<$count;$i++){
    
        if(!empty($_FILES['files']['name'][$i])){
    
          $_FILES['file']['name'] = $_FILES['files']['name'][$i];
          $_FILES['file']['type'] = $_FILES['files']['type'][$i];
          $_FILES['file']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
          $_FILES['file']['error'] = $_FILES['files']['error'][$i];
          $_FILES['file']['size'] = $_FILES['files']['size'][$i];
  
          $config['upload_path'] = 'uploads/'; 
          $config['allowed_types'] = 'jpg|jpeg|png|gif';
          $config['max_size'] = '5000';
          $config['file_name'] = $_FILES['files']['name'][$i];
   
          $this->load->library('upload',$config); 
    
          if($this->upload->do_upload('file')){
            $uploadData = $this->upload->data();
            $filename = $uploadData['file_name'];
   
            $data['totalFiles'][] = $filename;
          }
        }
   
      }
   
      $this->load->view('imageUploadForm', $data); 
   }

答案 1 :(得分:0)

试试这个:

在视图上 -

<input type="file" class="custom-file-input" id="file" name="file[]" multiple>
   
<label class="custom-file-label" for="customFile">Choose file</label>
                        </div>

在控制器上:

if ($multiplefile = $this->request->getFiles()) {
             foreach($multiplefile['file'] as $file)
             {   
                if ($file->isValid() && ! $file->hasMoved()) 
      {
          $newName = $file->getRandomName();
          $file->move(WRITEPATH.'uploads', $newName);
              $data = [
                'report_id' =>  $report_id,
                'document_name' => $newName,
                'document_type'  => $file->getClientMimeType()
              ];
              $save = $builder->insert($data);
              $msg = 'Files has been uploaded';
             }

             echo 'no';
        }
        echo 'no';

如果它带来错误,请在文件名上应用正则表达式以删除空格。