Проблема: при использовании стандартной библиотеки upload в CodeIgniter 2, при попытке загрузить файл с расширением docx возникает ошибка «Вы пытаетесь загрузить запрещенный тип файла» либо «The filetype you are attempting to upload is not allowed».
Вызывает ошибку: «Вы пытаетесь загрузить запрещенный тип файла» в Firefox.
Пример:
$this->load->library('upload'); $config['upload_path'] = 'upload/'; $config['allowed_types'] = 'docx|doc|rtf'; $config['max_size'] = '1000'; $this->upload->initialize($config); // Успешно загуржен файл if ($this->upload->do_upload('file_name')) { $data['upload_data'] = $this->upload->data(); $this->views_lib->render('upload_success_view', $data); } // Неудачно загружен файл else { $data['error'] = $this->upload->display_errors(); $this->views_lib->render('upload_view', $data); }
Решение:
Поправить файл ./application/config/mimes.php, заменив строку:
'docx'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
на:
'docx' => array('application/x-binary-data', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
Возвращаемые MIME-типы в разных браузерах:
application/vnd.openxmlformats-officedocument.wordprocessingml.document — Chrome, IE, Sarafi, Opera
application/x-binary-data — Firefox