我收到错误消息:尝试更新任何文件时,不允许您尝试上传的文件类型。
if(!empty($_FILES['proof_of_purchase']['name'])) { $config['upload_path'] = './uploads/invoices/'; $config['allowed_types'] = 'gif|jpg|jpeg|png|pdf|bmp'; $config['max_size'] = '3000'; $this->load->library('upload', $config); // if there was an error, return and display it if (!$this->upload->do_upload('proof_of_purchase')) { $data['error'] = $this->upload->display_errors(); $data['include'] = 'pages/classic-register'; } else { $data['upload_data'] = $this->upload->data(); $filename = $data['upload_data']['file_name']; } }
我尝试了许多不同的文件-大多数是gif&jpeg,每次都遇到相同的错误。
var_dump($ _ FILES); 给我:
array(1) { ["proof_of_purchase"]=> array(5) { ["name"]=> string(28) "2010-12-04_00019.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(19) "D:\temp\php2BAE.tmp" ["error"]=> int(0) ["size"]=> int(58054) } }
我检查了mime配置,它包含正确的内容。例:
'jpeg' => array('image/jpeg', 'image/pjpeg'), 'jpg' => array('image/jpeg', 'image/pjpeg'), 'jpe' => array('image/jpeg', 'image/pjpeg'),
我花了太长时间了,这真让我发疯!任何想法都将非常有帮助。
如果您使用的是Codeigniter 2.1.0版,则上载库中存在错误。有关更多详细信息,请参见http://codeigniter.com/forums/viewthread/204725/。
基本上,我所做的是修改文件上传类中的几行代码(位置:./ system / libraries / Upload.php)
1)修改行号1044
从:
$this->file_type = @mime_content_type($file['tmp_name']); return;
对此:
$this->file_type = @mime_content_type($file['tmp_name']); if (strlen($this->file_type) > 0) return;
2)修改行号1058
@exec('file --brief --mime-type ' . escapeshellarg($file['tmp_path']), $output, $return_code);
@exec('file --brief --mime-type ' . escapeshellarg($file['tmp_name']), $output, $return_code);
您可能会看到,第1058行尝试使用不存在的数组值。