【问题标题】:Upload multiple File in codeigniter After Submit form提交表单后在codeigniter中上传多个文件
【发布时间】:2020-02-01 16:38:11
【问题描述】:

在我的 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
                )

        )

【问题讨论】:

    标签: php file codeigniter multifile-uploader


    【解决方案1】:

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

    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('',''));
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      在 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'];
          }
      }
      

      【讨论】:

      • prnt.sc/peb901 --- 遇到 PHP 错误 严重性:通知消息:未定义的偏移量:0 文件名:controllers/MainController.php 行号:129 回溯:文件:C:\xampp\htdocs\ yard\application\controllers\MainController.php 行:129 函数:_error_handler 文件:C:\xampp\htdocs\yard\index.php 行:315 函数:require_once
      • 这是错误的,因为您的名称数组键如 pic_passport 和 att_document 而不是 0 和 1。 @UsamaAshraf
      猜你喜欢
      • 2013-01-08
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2019-02-28
      相关资源
      最近更新 更多