提交表单后在codeigniter中上传多个文件

时间:2019-10-03 11:01:45

标签: php file codeigniter multifile-uploader

在我的CodeIgniter项目中,我在项目创建期间上传了多个文件。请让我知道如何使用CI上传多个文件。

这是提交表单后的输出数组。

[user_attached] => Array
        (
            [name] => Array
                (
                    [pic_passport] => cp-user-error.png
                    [att_document] => local-delivery-done.png
                )

            [type] => Array
                (
                    [pic_passport] => image/png
                    [att_document] => image/png
                )

            [tmp_name] => Array
                (
                    [pic_passport] => C:\xampp\tmp\phpC707.tmp
                    [att_document] => C:\xampp\tmp\phpC718.tmp
                )

            [error] => Array
                (
                    [pic_passport] => 0
                    [att_document] => 0
                )

            [size] => Array
                (
                    [pic_passport] => 635392
                    [att_document] => 36512
                )

        )

2 个答案:

答案 0 :(得分:0)

要在Codeigniter中上载多个文件。试试这个。

     $filesCount = count($_FILES['user_attached']['name']);
    $path = 'upload/document';
    if (!file_exists($path)) {
        mkdir($path, 0777, true);
    }
    $array = ['pic_passport','att_document'];

for($i = 0; $i < $filesCount; $i++) { 

    $_FILES['userFile']['name'] = $_FILES['user_attached']['name'][$array[$i]];
    $_FILES['userFile']['name'] = $_FILES['user_attached']['name'][$array[$i]];
    $_FILES['userFile']['type'] = $_FILES['user_attached']['type'][$array[$i]];
    $_FILES['userFile']['tmp_name'] = $_FILES['user_attached']['tmp_name'][$array[$i]];
    $_FILES['userFile']['error'] = $_FILES['user_attached']['error'][$array[$i]];
    $_FILES['userFile']['size'] = $_FILES['user_attached']['size'][$array[$i]];
    $imagename = $this->randomAlphanumId(10);              
    $image_name[$array[$i]]="doc_".$imagename."_".str_replace(array(' '),'_',$_FILES['userFile']['name']);

    $config['upload_path'] = $path;
    $config['allowed_types'] = '*';
    $config['file_name'] = $image_name[$array[$i]];
    $this->load->library('upload',$config);
    $this->upload->initialize($config);
    if($this->upload->do_upload('userFile')) {
        $fileData = $this->upload->data();
        $upload_image[] = $fileData['file_name'];
    }
}

答案 1 :(得分:0)

为此代码创建库并从控制器调用

for($i = 0; $i < $config_array['files_count']; $i++)
{
    if($config_array['file_data']['name'][$i]) 
    {
        $file_name = $config_array['file_data']['name'][$i];

        $file_info  = pathinfo($file_name);

        $new_file_name = preg_replace('/[[:space:]]+/', '_', $file_info['filename']);

        $new_file_name = $new_file_name.'_'.DATE(UPLOAD_FILE_DATE_FORMAT);

        $new_file_name = str_replace('.','_',$new_file_name);

        $file_extension = $file_info['extension'];

        $new_file_name = $new_file_name.'.'.$file_extension;

        $_FILES['attchment']['name'] = $new_file_name;

        $_FILES['attchment']['tmp_name'] = $config_array['file_data']['tmp_name'][$i];

        $_FILES['attchment']['error'] = $config_array['file_data']['error'][$i];

        $_FILES['attchment']['size'] = $config_array['file_data']['size'][$i];

        $config['upload_path'] = $config_array['file_upload_path'];

        $config['file_name'] = $new_file_name;

        $config['allowed_types'] = $config_array['file_permission'];

        $config['file_ext_tolower'] = TRUE;

        $config['remove_spaces'] = TRUE;

        $config['max_size'] = $config_array['file_size'];

        $this->CI->load->library('upload',$config);

        $this->CI->upload->initialize($config);

        if($this->CI->upload->do_upload('attchment'))
        {
            array_push($file_array,array(
                    'og_name'=> $file_name,
                    'name'=> $new_file_name)
            );
        }
        else
        {   
            array_push($error_msgs,$this->CI->upload->display_errors('',''));
        }
    }
}