javascript - 使用 CodeIgniter 和 Ajax 以及多个输入字段在每个输入中上传多个文件

标签 javascript php jquery ajax codeigniter

我无法在 codeigniter 的文件夹中上传多个图像。我用过这个引用Multiple image upload 。请有人帮助我。至少这篇引用文献的作者请帮我解决这个问题。这是我的代码

查看

<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);
        }
    });
});
});

Controller

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);
}

它将图像名称返回到数组中,但无法将其上传到文件夹中。而且我还需要将每个图像名称放在单独的变量中。请帮帮我,我很着急。

最佳答案

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

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);
}

请确保您指定了正确的文件夹路径,并且文件夹有足够的权限来写入文件。

如果不起作用请告诉我。

关于javascript - 使用 CodeIgniter 和 Ajax 以及多个输入字段在每个输入中上传多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660036/

相关文章:

javascript - 为什么 eventDragStop 不能在回调中编辑事件? (全日历 v4)

javascript - AngularJS onload - 未捕获的 ReferenceError : $scope is not defined

php - 在 php 中执行多个操作

php - 从 amazon s3 buckets 子文件夹中获取文件

javascript - 如何更改屏幕中的窗口

javascript - 我们可以使用 axios 拦截器来响应 window.fetch 发出的 http 调用吗?

php - 通过 PHP 从字符串中删除特定的 XML 标签

javascript - 需要重新加载页面才能加载 JavaScript?

javascript - 如何防止页面在表单提交后重新加载 - JQuery

javascript - 如何禁用或删除默认的 HighChart 加载消息?