2017-09-12 1 views
0

CodeIgniterで複数のファイルをアップロードしようとしています。codeignitorに複数のファイルをアップロードしようとしています。 do_uploadを取得するとエラーが発生しました。

<input type="file" accept="image/png, image/jpeg, image/gif, application/pdf, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, text/plain, application/pdf" name="file[]" multiple/> 

私のコントローラの機能 ここで$ファイルは、ファイルの名前がアップロードされている。しかし、私は

A PHP Error was encountered Severity: Warning Message: is_uploaded_file() expects parameter 1 to be string, array given Filename: libraries/Upload.php Error: You did not select a file to upload. 

警告を下回るとエラーがここに私のファイルアップロードフォームコントロールで取得しています私は他の関数からこのfile_upload()に渡します。あなたのコード私見

public function file_upload($file){ 
    $new_file = ""; 
    $original_file_name = ''; 
    if($file!=""){ 
     $file_name = $file; 
     $original_file_name = $file_name; 
     $random = rand(1, 10000000000000000); 
     $makeRandom = hash('sha512', $random.$this->input->post('title') . config_item("encryption_key")); 
     $file_name_rename = $makeRandom; 
     $explode = explode('.', $file_name); 
     if(count($explode) >= 2) { 
      $new_file = $file_name_rename.'.'.$explode[1]; 
      $config['upload_path'] = "./uploads/images"; 
      $config['allowed_types'] = "gif|jpg|png|jpeg|pdf|doc|xml|docx|GIF|JPG|PNG|JPEG|PDF|DOC|XML|DOCX|xls|xlsx|txt|ppt|csv"; 
      $config['file_name'] = $new_file; 
      $config['max_size'] = '3072'; 
      $config['max_width'] = '3000'; 
      $config['max_height'] = '3000'; 
      $this->load->library('upload',$config); 
       $this->upload->initialize($config); 
      if(!$this->upload->do_upload("file")) { 
       print_r($this->upload->display_errors()); 
      } else { 

       echo "success"; 


      } 
     } else { 
      //error 
     } 
    }else{ 
     //some code here 
    } 


} 
+0

を動作するはずです変更しました複数のファイル '$ _FILES'配列は、単一のファイルを持つものとは異なります。 –

+0

'file_upload'はどのように呼び出されますか? – sintakonte

答えて

2

はどんな意味がありません - しかし、ここでの主な問題はある - あなたがそのような_FILES配列

何かの場合は

public function file_upload() 
{ 
    $strInputFileName = "file"; 
    $arrFiles = $_FILES; 

    $config['upload_path'] = "./uploads/images"; 
    $config['allowed_types'] = "gif|jpg|png|jpeg|pdf|doc|xml|docx|GIF|JPG|PNG|JPEG|PDF|DOC|XML|DOCX|xls|xlsx|txt|ppt|csv"; 
    $config['file_name'] = $new_file; 
    $config['max_size'] = '3072'; 
    $config['max_width'] = '3000'; 
    $config['max_height'] = '3000'; 
    $config['file_name'] = $this->getRandomFileName(); 

    if (is_array($_FILES[$strInputFileName]['name'])) 
    { 
     $countFiles = count($_FILES[$strInputFileName]['name']); 
     for($i=0;$i<$countFiles; $i++) 
     { 
      //overwrite _FILES array 
      $_FILES[$strInputFileName]['name'] = $arrFiles[$strInputFileName]['name'][$i]; 
      $_FILES[$strInputFileName]['type'] = $arrFiles[$strInputFileName]['type'][$i]; 
      $_FILES[$strInputFileName]['tmp_name'] = $arrFiles$strInputFileName]['tmp_name'][$i]; 
      $_FILES[$strInputFileName]['error'] = $arrFiles[$strInputFileName]['error'][$i]; 
      $_FILES[$strInputFileName]['size'] = $arrFiles[$strInputFileName]['size'][$i]; 
      $this->upload->initialize($config); 
      if(!$this->upload->do_upload($strInputFileName)) 
      { 
       print_r($this->upload->display_errors()); 
      } 
      else 
      { 
       echo "success"; 
      } 
     } 
    } 
    else 
    { 
     $this->upload->initialize($config); 
     if(!$this->upload->do_upload($strInputFileName)) 
     { 
      print_r($this->upload->display_errors()); 
     } 
     else 
     { 
      echo "success"; 
     } 
    } 
} 

private function getRandomFileName() 
{ 
    $random = rand(1, 10000000000000000); 
    return hash('sha512', $random.$this->input->post('title') . config_item("encryption_key")); 
} 
+0

私はあなたの解決策を試みます。 –

+0

ファイルがアップロードされています。ありがとうございました –

関連する問題