Javascript 使用带有CodeIgniter的AJAX上传文件

Javascript 使用带有CodeIgniter的AJAX上传文件,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我试过很多例子。这一个曾经成功,但有时无法上传。这是我的代码: <div class="fallback"> <form method="POST" id="quiz_file" action="<?php echo site_url('home/upload_quiz/' . $kelas);?>" enctype="multipart/form-data"> <input name="filequiz" id="filequi

我试过很多例子。这一个曾经成功,但有时无法上传。这是我的代码:

<div class="fallback">
    <form method="POST" id="quiz_file" action="<?php echo site_url('home/upload_quiz/' . $kelas);?>" enctype="multipart/form-data">
        <input name="filequiz" id="filequiz" type="file" />
    </form>
</div>
这是我的控制器:

function upload_quiz($kelas) 
    {
        $temp = explode(".", $_FILES["filequiz"]["name"]);
        $extension = end($temp);
        $new_name = time() . "." . $extension; 
        $config['upload_path']          = './assets/images/quiz_images/';
        $config['allowed_types']        = 'gif|jpg|png|jpeg';
        $config['max_size']             = 2000;
        $config['file_name']            = $new_name;
        $config['max_width']            = 1024;
        $config['max_height']           = 768;
        $this->load->library('upload', $config);

        $session_data = $this->session->userdata('logged_in');
        $data['user_name'] = $session_data['user_name'];
        $data['kelas'] = $kelas;
        if ( ! $this->upload->do_upload('filequiz'))
        {
            $data['error'] = array('error' => $this->upload->display_errors());
            $this->load->view('course', $data);
        }
        else
        {
            $data['status'] = array('upload_data' => $this->upload->data());
            $quiz_name = $this->input->post('quiz_name');
            $this->load->model('Model');
            if($this->Model->input_quiz($quiz_name,$new_name,$kelas) == TRUE)
            {
                $this->load->view('course', $data);
            }
            elseif($this->Model->input_quiz($quiz_name,$new_name,$kelas) == FALSE)
            {
                $this->load->view('course', $data);
            }
        } 
    }
在我使用按钮提交之后,当我使用console.log(数据)时,会出现AJAX响应。它说我的控制器函数($temp)的第一行是UNDIFEND索引:filequick

我会错过什么呢?

改变这个

  $temp = explode(".", $_FILES["filequiz"]["name"]);
如下

 $temp = explode(".", $_FILES["file"]["name"]);
if(!$this->upload->do_upload('filequick'))
if(!$this->upload->do_upload('file'))

当您通过JS将文件名作为
文件发送时,请不要
filequick

但是,如果您想使用name
filequick
,请将ajax代码从

formData.append("file", fileToUpload);


这意味着文件未被传递,请尝试在浏览器中检查传递了哪些数据,并且像
formdata
对象这样的名称工具库正在发送
file
而不是
filequick
您是否可以尝试
$\u FILES[“file”][“tmp\u name”]
?您可以参考此链接:
formData.append("file", fileToUpload);
formData.append("filequiz", fileToUpload);