2017-09-12 1 views
0

J'essaye de télécharger plusieurs fichiers dans CodeIgniter. Mais je reçois ci-dessous avertissement et erreurVous essayez de télécharger plusieurs fichiers dans codeignitor. Getting do_upload attend un tableau d'erreur donnée erreur

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. 

Voici mon fichier de contrôle de formulaire de téléchargement:

<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/> 

Ma fonction contrôleur Ici $ fichier est le nom du fichier en cours de téléchargement qui Je passe à cette file_upload() d'autre fonction.

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

En cas de plusieurs fichiers '$ _FILES' tableau diffèrent de celui avec un seul fichier. –

+0

Comment appelle 'file_upload'? – sintakonte

Répondre

2

IMHO votre code ne fait pas de sens - mais le principal problème est ici - vous avez à changer le tableau _FILES

Quelque chose comme ça devrait fonctionner

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

Je vais essayer votre solution. –

+0

Cela fonctionne, les fichiers sont en cours de téléchargement. Je vous remercie –