Codeigniter 2.2:文件上传


Codeigniter 2.2: File Upload

我在CodeIgniter 2.2中处理文件上传有问题。我可以创建它的特定文件夹目标,但是我无法上传我所选择的文件。

我的控制器:

function create_report()
{
    if($this->session->userdata('logged_in'))
    {
            $this->create_model->set_report();

            $this->session->set_flashdata('message', 'Success! You created a Report!');
            #$redirect($_SERVER['HTTP_REFERER'], 'refresh');

     }
   else
   {
            $this->session->set_flashdata('message', 'Oops! You have to Login');
     //If no session, redirect to login page
            redirect('login', 'refresh');
   }      
}

这是我的模型:

function set_report()
    {
    if($this->session->userdata('logged_in'))
        {       
                $session_data = $this->session->userdata('logged_in');
                if($_FILES['userfile']['name'] != NULL)
                {       
                        $main_dir = './FILES/'.$this->input->post('patientname').'/';
                        // Check if User Folder is already created. Create New if none exist
                        if(!is_dir($main_dir)){
                        mkdir($main_dir, 0777);
                        }
                        $target_dir = './FILES/'.$this->input->post('patientname').'/'.$this->input->post('session_id').'/';
                        // Check if Session Folder is already created. Create New if none exist
                        if(!is_dir($target_dir)) {
                        mkdir($target_dir, 0777);
                        }
                        $config['upload_path'] = './FILES/'.$this->input->post('patientname').'/'.$this->input->post('session_id').'/';
                        $config['allowed_types'] = 'gif|jpg|png|docx|xlsx|doc|pdf|csv|zip|rar|7zip|ppt|pptx';

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

                        $data2 = array('upload_data' => $this->upload->data());

                }
                $data = array(                      
                    'session_id' => $this->input->post('session_id'),   
                    'report_creator' => $session_data['username'],
                    'report_patientname' => $this->input->post('patientname'),
                    'report_patientid' => $this->input->post('patientid'),
                    'report_subject' => $this->input->post('subject'),                      
                    'report_description' => $this->input->post('description'),
                    'report_time' => $this->input->post('date'),                        
                    'report_date' => $this->input->post('time')                     
                );
                return $this->db->insert('session_reports', $data);
    }

}
我一直在试图解决这个问题,但我还没有找到答案。我希望有人能帮我这个忙。

我想我没有初始化配置。

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

那解决了我的问题。谢谢大家

删除

$data2 = array('upload_data' => $this->upload->data());

并将其替换为

if (!$this->upload->do_upload())
{
    $error = array('error' => $this->upload->display_errors());
    $this->load->view('upload_form', $error);
}
else
{
    $data = array('upload_data' => $this->upload->data());
    $this->load->view('upload_success', $data);
}

加载库

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

也可以通过调用initialize()方法来设置首选项。在自动加载类时非常有用:

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

Codeigniter文件上传