Php 无法以codeigniter格式上载文件

Php 无法以codeigniter格式上载文件,php,ajax,codeigniter,file-upload,upload,Php,Ajax,Codeigniter,File Upload,Upload,我有一个表单,允许用户输入数据和上传文件 <form enctype="multipart/form-data" id="form"> <input type="file" id="fileImage" class="fileImage" name="fileImage" > <button type="submit" id="save" class="save-icon-btn"> Submit </button> </

我有一个表单,允许用户输入数据和上传文件

<form enctype="multipart/form-data" id="form">
  <input type="file" id="fileImage" class="fileImage" name="fileImage" >
  <button type="submit" id="save" class="save-icon-btn">
    Submit
  </button>
</form>
我希望添加一个上传功能,允许用户上传一个单独的类别,但在相同的形式更多的文件。所以新的形式应该是

<form enctype="multipart/form-data" id="form">
  <input type="file" id="fileImage" class="fileImage" name="fileImage" >
  <input type="file" id="fileReport" class="fileReport" name="fileReport"  >
  <button type="submit" id="save" class="save-icon-btn">
    Submit
  </button>
</form>
但是,我无法理解如何更改ajax代码,以便它能够发送数据

由于更新了表单和后端代码,我无法保存这两个文件。只上载文件映像,而不上载文件报告

ajax代码:

var form_data = new FormData($('#form')[0]);
form_data.append('my_file3[]', $('input[type=file]')[0].files[0]); 
form_data.append('my_file3[]', $('input[type=file]')[1].files[0]); 
jQuery.ajax(
      {
        type: "POST",
        url: "<?php echo base_url(); ?>" + "class/student",
        data: form_data,
        async : false,
        cache : false,
        processData: false,
        contentType: false,
        success: function(res) 
          {
            console.log(res);
            alert(res);
          }
      });
var form_data=new FormData($('#form')[0]);
表单_data.append('my_file3[]',$('input[type=file]')[0].files[0]);
表单_data.append('my_file3[]',$('input[type=file]')[1]。文件[0]);
jQuery.ajax(
{
类型:“POST”,
url:“+”班级/学生“,
数据:表格数据,
async:false,
cache:false,
processData:false,
contentType:false,
成功:功能(res)
{
控制台日志(res);
警报(res);
}
});
在以下代码中:

 $cpt = count ($_FILES['my_file3']['name']);
    $target_dir = 'assets/files';
    $this->common_lib->make_dir_if_not($target_dir);
    for($i = 0; $i < $cpt; $i ++) {

        $_FILES['images']['name'] = $_FILES['my_file3']['name'][$i];
        $_FILES['images']['type'] = $_FILES['my_file3']['type'][$i];
        $_FILES['images']['tmp_name'] = $_FILES['my_file3']['tmp_name'][$i];
        $_FILES['images']['error'] = $_FILES['my_file3']['error'][$i];
        $_FILES['images']['size'] = $_FILES['my_file3']['size'][$i];

        $config = $this->common_lib->set_upload_config($target_dir);

        $this->load->library('upload');
        $this->upload->initialize($config); 
        if($this->upload->do_upload("images")){
        $fileName = $_FILES['images']['name'];
        $images[] = $fileName;
        $my_file .= $fileName;
        }
    }
$cpt=count($_文件['my_文件3']['name']);
$target_dir='资产/文件';
$this->common\u lib->make\u dir\u if\u not($target\u dir);
对于($i=0;$i<$cpt;$i++){
$\u文件['images']['name']=$\u文件['my\u file3']['name'][$i];
$\u文件['images']['type']=$\u文件['my\u file3']['type'][$i];
$\u文件['images']['tmp\u name']=$\u文件['my\u file3']['tmp\u name'][$i];
$\u文件['images']['error']=$\u文件['my\u file3']['error'][$i];
$\u文件['images']['size']=$\u文件['my\u file3']['size'][$i];
$config=$this->common\u lib->set\u upload\u config($target\u dir);
$this->load->library('upload');
$this->upload->initialize($config);
如果($this->upload->do_upload(“图像”)){
$fileName=$_文件['images']['name'];
$images[]=$fileName;
$my_file.=$fileName;
}
}

**我为邮件设置、上传设置、创建目录等常用功能创建了公共库(common_lib)。您可以使用自定义配置。

请尝试以下代码。如果有效的话,我会详细说明

print_r($_FILES); // show me this if it doesn't work

$this->load->library('upload');

$config['upload_path'] = './assets/student/.';
$config['allowed_types'] = 'gif|jpg|png|doc|txt';
$config['max_size'] = 1024 * 8;
$config['encrypt_name'] = TRUE;

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

if (!$this->upload->do_upload('fileImage')) 
    {
      $error = array('error' => $this->upload->display_errors());
       print_r($error);
    }
else
    {
      $data = $this->upload->data();
    }

$config1['upload_path'] = './assets/report/.';
$config1['allowed_types'] = 'gif|jpg|png|doc|txt';
$config1['max_size'] = 1024 * 8;
$config1['encrypt_name'] = TRUE;

$this->upload->initialize($config1, true);

if (!$this->upload->do_upload('fileReport')) 
    {
      $error = array('error' => $this->upload->display_errors());
       print_r($error);
    }
else
    {
      $data = $this->upload->data();
    }

添加了给定的参数,但只有1个文件以编写代码的方式上载,您一次只能上载一个文件。您应该解释这意味着什么以及如何解决此问题。@ezw您能看一下更新的文件吗post@sorak我已经更新了帖子,你能看一下吗?@Vishnu Bhadoriya,当我使用新表单时,你会面临什么问题?在使用新表单的同时,我会使用两次后端代码更改名称,则只上载1个图像。您只发送和处理1个文件。您必须发送这两个文件并分别处理它们,因为codeigniter上载库一次只发送一个文件。你有正确的逻辑,你只需要复制它(本质上)。这也是你的问题:。。。你真的不该重复questions@Alex我已经更新了帖子,你给出的链接不是我的,但是是的,我正在关注它,因为它和我的情况是一样的
var form_data = new FormData($('#form')[0]);
form_data.append('my_file3[]', $('input[type=file]')[0].files[0]); 
form_data.append('my_file3[]', $('input[type=file]')[1].files[0]); 
jQuery.ajax(
      {
        type: "POST",
        url: "<?php echo base_url(); ?>" + "class/student",
        data: form_data,
        async : false,
        cache : false,
        processData: false,
        contentType: false,
        success: function(res) 
          {
            console.log(res);
            alert(res);
          }
      });
 $cpt = count ($_FILES['my_file3']['name']);
    $target_dir = 'assets/files';
    $this->common_lib->make_dir_if_not($target_dir);
    for($i = 0; $i < $cpt; $i ++) {

        $_FILES['images']['name'] = $_FILES['my_file3']['name'][$i];
        $_FILES['images']['type'] = $_FILES['my_file3']['type'][$i];
        $_FILES['images']['tmp_name'] = $_FILES['my_file3']['tmp_name'][$i];
        $_FILES['images']['error'] = $_FILES['my_file3']['error'][$i];
        $_FILES['images']['size'] = $_FILES['my_file3']['size'][$i];

        $config = $this->common_lib->set_upload_config($target_dir);

        $this->load->library('upload');
        $this->upload->initialize($config); 
        if($this->upload->do_upload("images")){
        $fileName = $_FILES['images']['name'];
        $images[] = $fileName;
        $my_file .= $fileName;
        }
    }
print_r($_FILES); // show me this if it doesn't work

$this->load->library('upload');

$config['upload_path'] = './assets/student/.';
$config['allowed_types'] = 'gif|jpg|png|doc|txt';
$config['max_size'] = 1024 * 8;
$config['encrypt_name'] = TRUE;

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

if (!$this->upload->do_upload('fileImage')) 
    {
      $error = array('error' => $this->upload->display_errors());
       print_r($error);
    }
else
    {
      $data = $this->upload->data();
    }

$config1['upload_path'] = './assets/report/.';
$config1['allowed_types'] = 'gif|jpg|png|doc|txt';
$config1['max_size'] = 1024 * 8;
$config1['encrypt_name'] = TRUE;

$this->upload->initialize($config1, true);

if (!$this->upload->do_upload('fileReport')) 
    {
      $error = array('error' => $this->upload->display_errors());
       print_r($error);
    }
else
    {
      $data = $this->upload->data();
    }