Javascript 使用CodeIgniter和带有多个输入字段的Ajax在每个输入中上载多个文件

Javascript 使用CodeIgniter和带有多个输入字段的Ajax在每个输入中上载多个文件,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我无法在codeigniter的文件夹中上载多个图像。我使用了这个参考。有人请帮帮我。至少这本参考书的作者请帮我解决这个问题。这是我的密码 查看 <input type="file" name="images[]" class="file_input" multiple /> <input type="file" name="images[]" class="file_input" multiple /> <input type="file" name="image

我无法在codeigniter的文件夹中上载多个图像。我使用了这个参考。有人请帮帮我。至少这本参考书的作者请帮我解决这个问题。这是我的密码

查看

<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);
        }
    });
});
});
$(文档).ready(函数(){
$('#save')。在('单击',函数()上){
var fileInputs=$('.file_input');
var formData=new formData();
$.each(文件输入,函数(i,文件输入){
如果(fileInput.files.length>0){
$.each(fileInput.files,函数(k,文件){
append('images[],file);
});
}
});
$.ajax({
url:“练习集/过程”,
数据类型:“json”,
contentType:false,
processData:false,
数据:formData,
方法:“post”,
成功:功能(响应){
控制台日志(响应);
}
});
});
});
控制器

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);
}
公共职能流程()
{
$fileuploadurl=base_url()“研究集/”;
$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=数组();
$count_uploaded_files=count($_files['images']['name']);
$files=$\u文件;
对于($i=0;$i<$count\u上传的文件;$i++)
{
$_FILES['userfile']=[$FILES['images']['name'][$i]];
$F[]=$_文件['userfile'];
//这里是你上传CodeIgniter的地方。。。
$this->load->library('upload',$config);
$this->upload->data($_文件['userfile']);
如果(!$this->upload->data('images')){
echo$this->upload->display_errors();
} 
}
echo json_编码($F);
}

它将图像名称返回到数组中,但无法将其上载到文件夹中。我还需要在单独的变量中使用每个图像名称。请帮帮我,我赶时间。

在您的代码中,您似乎错过了上载文件。因此,它不会移动到特定文件夹。请查看下面的内容,希望对您有所帮助

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);
}
公共职能流程()
{
$fileuploadurl=base_url()“研究集/”;
$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=数组();
$count_上传的_文件=计数($_文件['images']);
$result=array();
对于($i=0;$i<$count\u上传的文件;$i++)
{
$\u文件[“文件”][“名称”]=$\u文件[“图像”][“名称”][$i];
$\u文件[“文件”][“类型”]=$\u文件[“图像”][“类型”][$i];
$_文件[“文件”][“tmp_名称”]=$_文件[“图像”][“tmp_名称”][$i];
$\u文件[“文件”][“错误”]=$\u文件[“图像”][“错误”][$i];
$\u文件[“文件”][“大小”]=$\u文件[“图像”][“大小”][$i];
$this->load->library('upload',$config);
如果(!$this->upload->do_upload('file')){
$result['errors'][=$this->upload->display_errors();
}否则{
$result['success'][=$this->upload->data();
}
}
echo json_编码($result);
}
请确保指定了正确的文件夹路径,并且文件夹有足够的权限写入文件


如果不起作用,请告诉我。

在您的代码中,您似乎错过了上载文件。因此,它不会移动到特定文件夹。请查看下面的内容,希望对您有所帮助

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);
}
公共职能流程()
{
$fileuploadurl=base_url()“研究集/”;
$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=数组();
$count_上传的_文件=计数($_文件['images']);
$result=array();
对于($i=0;$i<$count\u上传的文件;$i++)
{
$\u文件[“文件”][“名称”]=$\u文件[“图像”][“名称”][$i];
$\u文件[“文件”][“类型”]=$\u文件[“图像”][“类型”][$i];
$_文件[“文件”][“tmp_名称”]=$_文件[“图像”][“tmp_名称”][$i];
$\u文件[“文件”][“错误”]=$\u文件[“图像”][“错误”][$i];
$\u文件[“文件”][“大小”]=$\u文件[“图像”][“大小”][$i];
$this->load->library('upload',$config);
如果(!$this->upload->do_upload('file')){
$result['errors'][=$this->upload->display_errors();
}否则{
$result['success'][=$this->upload->data();
}
}
echo json_编码($result);
}
请确保指定了正确的文件夹路径,并且文件夹有足够的权限写入文件



如果不起作用,请告诉我。

为什么要使用具有
multilple
属性的同名多个文件?使用wamp或lamp的是哪台服务器?能否打印此$\u文件['userfile']我正在使用您在根文件夹中创建的
study\u set
文件夹中的Xampphave?为什么要使用具有
multilple
属性的同名多个文件?您使用的是wamp或lamp服务器?您能打印此$\u文件['userfile']我正在使用您在根文件夹中创建的Xampphave
study\u set
文件夹?我已授予在该文件夹中写入的权限。您的代码不起作用。请使用调试器工具并共享您的ajax响应,这样我可以更好地帮助您。(4)[“1.jpg”、“2.jpg”、“3.jpg”、“4.jpg”]0:“1.jpg”1:“2.jpg”2:“3.jpg”3:“4.jpg”长度:4_uproto_u:Array(0)我正在将图像从字段获取到控制器,但它在文件夹中没有更新。看起来您做错了什么,如果您使用上述代码,您将得到两个数组作为响应。一系列的成功和错误。请再次检查您的代码或复制并粘贴我的整个公司