文件上传者问题

时间:2016-01-28 11:41:56

标签: php codeigniter

我在控制器功能中有以下代码(这是CI):

    if(!empty($_FILES['filename']) && is_uploaded_file($_FILES['filename']['tmp_name'])) { 
                    $config['upload_path'] = './uploads/';
                    $config['allowed_types'] = 'gif|jpg|png';
                    $config['max_size'] = '1000';
                    $config['max_width']  = '1024';
                    $config['max_height']  = '768';
                    $this->load->library('upload', $config);
                    $this->upload->overwrite = true;
                    if ( ! $this->upload->do_upload('filename')){
                        $error = array('error' => $this->upload->display_errors());
                        var_dump($error);
                        exit;
                     }
                    else {
                        $this->upload->do_upload('filename');
                        $upload_info = $this->upload->data();
                        var_dump($upload_info);
                        exit;
                }
            }

这应该可以工作,它不返回任何错误,并在$upload_info之前返回exit();数组(此处退出以进行调试)。 $upload_info数组表明该文件已传递到服务器上的正确路径。此文件夹上的文件夹权限设置为777。

但是,该文件不会出现在服务器上!任何人都可以在这里提出问题。所有正确的库也已加载。

1 个答案:

答案 0 :(得分:0)

您要求$this->upload->do_upload('filename') 两次。 第一次在if,然后第二次在else - 分支。

您应该删除第二个$this->upload->do_upload('filename')

最终代码:

if ( ! $this->upload->do_upload('filename')){
    $error = array('error' => $this->upload->display_errors());
    var_dump($error);
    exit;
}
else {
    $upload_info = $this->upload->data();
    var_dump($upload_info);
    exit;
}