2017-10-10 94 views
1

我無法在codeigniter文件夾中上傳多個圖像。我用這個參考文獻Multiple image upload。有人請幫助我。至少這篇參考文章的作者請幫我解決這個問題。這裏是我的代碼使用CodeIgniter和Ajax在多個輸入字段中輸入多個文件

查看

<input type="file" name="images[]" class="file_input" multiple /> 
<input type="file" name="images[]" class="file_input" multiple /> 
<input type="file" name="images[]" class="file_input" multiple /> 
<input type="file" name="images[]" class="file_input" multiple /> 

腳本

$(document).ready(function(){ 
$('#save').on('click', function(){ 
    var fileInputs = $('.file_input'); 
    var formData = new FormData(); 
    $.each(fileInputs, function(i,fileInput){ 
     if(fileInput.files.length > 0){ 
      $.each(fileInput.files, function(k,file){ 
       formData.append('images[]', file); 
      }); 
     } 
    }); 
    $.ajax({ 
     url: '<?php echo base_url(); ?>exerciseset/process', 
        dataType: 'json', 
        contentType: false, 
        processData: false, 
        data: formData, 
        method: 'post', 

     success: function(response){ 
      console.log(response); 
     } 
    }); 
}); 
}); 

控制器

public function process() 
{ 
$fileuploadurl = base_url() . "study_set/"; 
    $config['upload_path'] = 'study_set/'; 
    $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp|mp3|mp4'; 
    $config['max_filename'] = '255'; 
    $config['encrypt_name'] = FALSE; 
    $config['max_size'] = '25000000'; 
$F = array(); 

$count_uploaded_files = count($_FILES['images']['name']); 

$files = $_FILES; 
for($i = 0; $i < $count_uploaded_files; $i++) 
{ 
    $_FILES['userfile'] = [$files['images']['name'][$i]]; 

    $F[] = $_FILES['userfile']; 

    // Here is where you do your CodeIgniter upload ... 
$this->load->library('upload', $config); 
       $this->upload->data($_FILES['userfile']); 
       if (!$this->upload->data('images')) { 
        echo $this->upload->display_errors(); 
       } 
} 

echo json_encode($F); 
} 

它返回IMA ges命名爲數組,但無法將其上載到文件夾中。而且我還需要每個圖像名稱在單獨的變量中。請幫我,我很着急。

+0

爲什麼你使用具有'multilple'屬性的同名多個文件? –

+0

哪個服務器在使用wamp或lamp? –

+0

你能打印這個$ _FILES ['userfile'] – Jinesh

回答

0

在你的代碼中,似乎你錯過了上傳文件。因此它不會移動到特定的文件夾。請檢查下面,希望它會幫助你。

public function process() 
{ 
    $fileuploadurl = base_url() . "study_set/"; 
    $config['upload_path'] = APPPATH . 'uploads/study_set/'; 
    $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp|mp3|mp4'; 
    $config['max_filename'] = '255'; 
    $config['encrypt_name'] = FALSE; 
    $config['max_size'] = '25000000'; 
    $F = array(); 

    $count_uploaded_files = count($_FILES['images']); 
    $result = array(); 
    for($i = 0; $i < $count_uploaded_files; $i++) 
    { 
     $_FILES["file"]["name"] = $_FILES["images"]["name"][$i]; 
     $_FILES["file"]["type"] = $_FILES["images"]["type"][$i]; 
     $_FILES["file"]["tmp_name"] = $_FILES["images"]["tmp_name"][$i]; 
     $_FILES["file"]["error"] = $_FILES["images"]["error"][$i]; 
     $_FILES["file"]["size"] = $_FILES["images"]["size"][$i]; 
     $this->load->library('upload', $config); 
     if (!$this->upload->do_upload('file')) { 
      $result['errors'][] = $this->upload->display_errors(); 
     }else{ 
      $result['success'][] = $this->upload->data(); 
     } 
    } 
    echo json_encode($result); 
} 

請確保您指定了正確的文件夾路徑並且文件夾有足夠的權限來寫入文件。

讓我知道它是否無效。

+0

我已經授予了在該文件夾中寫入的權限。你的代碼不起作用。 –

+0

使用調試工具並分享您的ajax響應,所以我可以幫助您更好。 –

+0

(4)[「1.jpg」,「2.jpg」,「3.jpg」,「4.jpg」] 0:「1.jpg」1:「2.jpg」2:「3.jpg」 3:「4.jpg」長度:4__proto__:Array(0) –