1

嗨,我已经建立一个网站大约 3 个月了,今天让我的女朋友用虚拟内容填充它以进行测试。在那里,她很高兴地测试和上传文件,突然,一旦她完成了大约 8 篇文章,上传者决定不更改代码等,开始拒绝上传,说文件类型是不允许的。

现在不用说我已经通过这个上传图像一个多月了,这是第一次出现这个问题。更令人困惑的是,我在其他部分使用 CI 上传类,具有相同的 mime 参数,而且效果很好!我检查了 $_FILES 中的 mime,这是 image/jpg 或 image/png 等,所有这些都被 CI 识别。我也看到了 CI 2.1.0 中的错误,但我在 2.1.1 上,我认为错误已修复(或未修复),因为之前错误所在的上传库中的代码略有不同。

无论哪种方式,我都推断这是一个 mime 错误,因为将允许的类型配置参数设置为 * 工作正常!当然,这远非理想,因为潜在的安全漏洞是惊人的。我现在正处于关键时刻,因为我还有其他工作要做。我已经附上了处理此上传的代码部分,以防我做一些非常愚蠢的事情,但如果其他人不知从哪里发现了这个问题,我很想知道任何解决方法/解决方案......还有关于这怎么可能只是抬起它丑陋的头来,那就太好了。我经常与这些事情的神秘面作斗争。

if(isset($_FILES['article_main_image']) && $_FILES['article_main_image']['size'] > 0){

    $filename = $this->input->post('article_title') . '_' . time();

    $config['upload_path'] = './resource/data/tmpstore/';
    $config['allowed_types'] = 'gif|jpg|png|jpeg';
    $config['file_name'] = $filename;

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


    if ($this->upload->do_upload('article_main_image'))
    {

        $uploadData = $this->upload->data();
        $filename = $uploadData['file_name'];

        //Other stuff here

    } else {

       $this->session->set_flashdata('validationErrors', $this->upload->display_errors());
       $this->session->set_flashdata('postVars', $this->input->post());

       redirect('/admin/contenteditor/editarticle?id=' . $this->input->post('articleId'));
    }
}
4

1 回答 1

0

尝试通过使用调试您的上传数据数组print_r($uploadData);并查看内容file_type,也许她尝试上传的图像可能没有正确的 mime 类型。

于 2012-10-07T01:47:52.817 回答