2015-10-06 18 views
10

Come caricare più file in codeigniter 3.0.1. Esistono problemi e soluzioni simili nello stackoverflow, ma sfortunatamente nessuno di essi contribuisce a risolvere il problema che sto affrontando.Come caricare più file in codeigniter 3.0.1

Questo è il messaggio di errore che appare You did not select a file to upload con il mio codice corrente

vista (addGallery)

<section> 
    <h2>Add Gallery</h2> 
     <?php echo form_open('Newsupload/gallery', ['id'=>'news', 'name'=>'news', 'method'=>'post','enctype'=>'multipart/form-data']) ?> 

     <div class="grp width-50"> 
      <label for="name">Album Name</label> 
      <input type="text" name="name" id="name" value="" placeholder=""> 
     </div> 
     <div class="grp width-100"> 
      <div id="selectedFiles"></div> 
      <input type="file" id="files" name="files[]" multiple size="20"><br/> 
     </div> 
     <?php if (isset($error)) { 
      echo $error; 
     } ?> 
     <grp class="grp width-100"> 
      <button>Add</button> 
     </grp> 
    </form> 
</section> 

controllore (galleria)

public function gallery() 
{ 

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

    $files = $_FILES; 
    $cpt = count($_FILES['files']['name']); 
    for($i=0; $i<$cpt; $i++) 
    {   
     $_FILES['files']['name']= $files['files']['name'][$i]; 
     $_FILES['files']['type']= $files['files']['type'][$i]; 
     $_FILES['files']['tmp_name']= $files['files']['tmp_name'][$i]; 
     $_FILES['files']['error']= $files['files']['error'][$i]; 
     $_FILES['files']['size']= $files['files']['size'][$i];  

     $this->upload->initialize($this->set_upload_options()); 
     // $this->upload->do_upload('files[]'); 
     if (!$this->upload->do_upload('files[]')) 
     { 
      $error =['error' => $this->upload->display_errors()]; 
      $this->load->view('admin/addGallery', $error); 
     } 
    } 
} 
public function set_upload_options() 
{ 
    $config['upload_path'] = getcwd().'/upload/'; 
    $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
    $config['remove_spaces'] = true; 
    return $config; 
} 
+0

$ this-> di upload> do_upload ('file'); –

risposta

2

penso che è necessario cambia questa riga:

if (!$this->upload->do_upload('files[]')) 

a

if (!$this->upload->do_upload('files')) 
0

provare questo:

 $files = $_FILES; 
     $cpt = count($_FILES['files']['name']); 
     for($i=0; $i<$cpt; $i++) 
     { 
     $_FILES['files']['name']= $files['files']['name'][$i]; 
     $_FILES['files']['type']= $files['files']['type'][$i]; 
     $_FILES['files']['tmp_name']= $files['files']['tmp_name'][$i]; 
     $_FILES['files']['error']= $files['files']['error'][$i]; 
     $_FILES['files']['size']= $files['files']['size'][$i]; 
     $this->upload->initialize($this->set_upload_options()); 
     $this->upload->do_upload(); 
     $fileName = $_FILES['files']['name']; 
     $images[] = $fileName; 

e fare una funzione set_upload_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; 

Per più file multipli Carica utilizzando CodeIgniter provare questo http://w3code.in/2015/09/upload-file-using-codeigniter/

+0

Ho provato questo codice, ma ho ottenuto dato errore di gravità: Avviso Messaggio: Variabile non definita: _file Nome file: librerie/upload.php Numero riga: 408 –

+0

Had a fare la set_upload_options function()? – Ricky

2

non hai passato il nome del file per caricare la funzione. Prova questo.

if (!$this->upload->do_upload($_FILES['files']['name'])) 
     { 
      $error =['error' => $this->upload->display_errors()]; 
      $this->load->view('admin/addGallery', $error); 
} 
0

Si prega di provare a soffietto

for($i=0; $i<$cpt; $i++) 
{   
    $_FILES['files'] = $files[$i]; 
    $this->upload->initialize($this->set_upload_options()); 
    if (!$this->upload->do_upload('files')) 
    { 
     $error =['error' => $this->upload->display_errors()]; 
     $this->load->view('admin/addGallery', $error); 
    } 
} 
0

È possibile caricare più file con CodeIgniter in una singola richiesta. Hai solo bisogno di fare do_upload() per ogni file. Ecco una implementazione. Puoi lavorarlo in un loop se necessario.

// Image upload Config 
    $config['upload_path'] = './uploads/'; 
    $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
    $config['max_size']  = '1000000'; 
    $config['encrypt_name'] = TRUE; 
    $this->load->library('upload', $config); 

    // Upload Files 
    if ($_FILES['first_file']['name'] && $this->upload->do_upload('first_file')) { 
     $first_file = $this->upload->data(); 
    } 
    if ($_FILES['second_file']['name'] && $this->upload->do_upload('second_file')) { 
     $second_file= $this->upload->data(); 
    } 
0

solo che ho capito dalla libreria $this->upload->do_upload('inputelementname') non deve immettere nome dell'elemento. Dovrebbe essere la chiave dell'array di file.

Quindi, in questo contesto, questo dovrebbe funzionare

if($_FILES){ 
       $filecount=count($_FILES['addmediaelement']['name']); 
       for($i=0; $i<$filecount; $i++){ 
        $_FILES['mediaelement']['name']=$_FILES['addmediaelement']['name'][$i]; 
        $_FILES['mediaelement']['type']=$_FILES['addmediaelement']['type'][$i]; 
        $_FILES['mediaelement']['tmp_name']=$_FILES['addmediaelement']['tmp_name'][$i]; 
        $_FILES['mediaelement']['error']=$_FILES['addmediaelement']['error'][$i]; 
        $_FILES['mediaelement']['size']=$_FILES['addmediaelement']['size'][$i]; 

        $config['upload_path']=path/to/save/file; 
        $config['file_name']=filealternatename.extension; 
        $config['max_size']=MAXSIZE; //max size constant 
        $config['max_width']=MAXWIDTH; //max width constant 
        $config['max_height']=CMPMAXHEIGHT; //max height constant 
        $config['allowed_types']='jpg|png'; 

        if(!is_dir($config['upload_path'])){ 
         mkdir($config['upload_path'], 0775); 
        } 
        $this->upload->initialize($config); 
        $imageuploaderres[]=$this->upload->do_upload('mediaelement'); 
       } 
      } 
Problemi correlati