【发布时间】:2012-09-23 11:40:49
【问题描述】:
您好,我已经建立一个网站大约 3 个月了,今天让我的女朋友用虚拟内容填充它以进行测试。在那里,她正在愉快地测试和上传文件,但突然间,她完成了大约 8 篇文章,上传者决定不更改代码等,开始拒绝上传,说文件类型不允许。
现在不用说我已经通过这个上传图像一个多月了,这是第一次出现这个问题。更令人困惑的是,我在其他部分使用具有相同 mime 参数的 CI 上传类,它工作正常!我检查了 $_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'));
}
}
【问题讨论】:
-
如果将 mimes.php 中的
jpg/jpeg(或任何图像类型)mime 更改为array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),会发生什么? -
这仍然是个问题吗?您现在升级到最新的 CI 了吗? (2.1.2)。
标签: php codeigniter upload