Codeigniter do_upload()默默无效“成功”

时间:2011-06-22 04:15:44

标签: php image forms codeigniter upload

我正在使用CodeIgniter编写图像上传表单。我之前有类似的代码可以在不同的网站上工作。目前 - 接收多部分/表单数据映像的代码无声地失败。在配置服务器/脚本时,我收到了错误,例如错误的文件路径,被忽略的mime类型,但现在我什么都没得到。

以下代码返回:“ABC”并在“D”之前失败且没有错误。

如果我将'photo_filedata'更改为'photo_filedata2',我会收到更有用的错误:“ABCD您没有选择要上传的文件。”

我完全没有调试这个,因为我从服务器上没有收到任何错误。

有谁知道可能会发生什么?

服务器:WAMP,在Windows 7上运行。拥有一个现有项目,可以毫无问题地上传文件。

function upload_photo()
{
    echo "A";

    $config['upload_path'] = './images/uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['file_name'] = 'photo_' . substr(md5(time()), 0, 16);
    $config['max_size']    = 2000;
    $config['max_width']  = 0;
    $config['max_height']  = 0;

    echo "B";

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

    echo "C";

    $result = $this->upload->do_upload('photo_filedata');

    echo "D";

    if (!$result)
    {
        $error = $this->upload->display_errors();
        $data = false;
    }   
    else
    {
        $error = false;
        $data = $this->upload->data();
    }

    $this->load->view('home-photo-upload', array('error' => $error, 'data' => $data));
}

3 个答案:

答案 0 :(得分:1)

$config['upload_path'] = 'uploads/category/'.$id.'/';
        //echo $file_name;die;
        //echo $config['upload_path'];
        $config['allowed_types'] = 'gif|jpg|jpeg|png';
        $config['max_size'] = '750';
        $config['max_width'] = '1920';
        $config['max_height'] = '1280';
        $this->load->library('upload');
         foreach ($_FILES as $key => $value) {
            //print_r($key);

            if (!empty($key['name'])) {

                $this->upload->initialize($config);
                if (!$this->upload->do_upload($key)) {
                  // echo 'test';die;
//                    rmdir('uploads/category/'.$id);
                    $errors = $this->upload->display_errors();
                    flashMsg($errors);
                }
}
}

试试这个!

答案 1 :(得分:0)

你给出maxwidth和maxheight为零可能是问题检查它。

答案 2 :(得分:0)

(转发自评论): system / application / config / mimes.php中有一个错字/错误导致do_upload()中的is_allowed_filetype()方法失败;

Erronous: 
        ...
        'gif' => array('image/gif', 'application/octet-stream'),
        'jpeg' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
        'jpg' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
        'jpe' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
        'png' => array('image/png', 'image/x-png', 'application/octet-stream' 
    );

//缺少)进行最后的输入。 - John Beech(又名Markavian)

CodeIgniter配置文件中的任何错误似乎都是静默失败的,因此不会报告任何其他错误。通过调试内部CI方法找出问题,找出哪条线路出现故障。