2017-10-10 93 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) –