CodeIgniter Класс публикации Тип файла PDF не разрешен

Работает локально, но на двух серверах, которые я пробовал, отображается одно и то же сообщение об ошибке. Использование Codeigniter 2.1.3

private function upload_file(){ $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'jpg|png|jpeg|gif|pdf'; $config['max_width'] = '0'; $config['max_height'] = '0'; $config['encrypt_name'] = true; $this->load->library('upload', $config); var_dump($_FILES); if ( ! $this->upload->do_upload()){ $error = array('error' => $this->upload->display_errors()); var_dump($error); die(); return $error; } else { $data = array('upload_data' => $this->upload->data()); var_dump($data); die(); return $data; } } 

Выполняя var_dump($_FILES); он показывает правильный информационный array(1) { ["userfile"]=> array(5) { ["name"]=> string(8) "0002.pdf" ["type"]=> string(14) "aplication/pdf" ["tmp_name"]=> string(27) "C:\Windows\Temp\php9454.tmp" ["error"]=> int(0) ["size"]=> int(29295) } }

var_dump($error) выдает array(1) { ["error"]=> string(64) " The filetype you are attempting to upload is not allowed. " }

Протестировано с png и jpg, и эти работы изумительно.

Правильные типы mime находятся в конфигурационном файле config/mimes.php

  'pdf' => array('application/pdf', 'application/x-download'), 

Изменить: если это что-то значит, локальный сервер – это MAC, а два пульта – это окна.

Поэтому, несмотря на то, что код все правильно, ошибка на самом деле на самом PHP. Там есть орфографическая ошибка в mime-типах. Когда var_dump($_FILES) выплевывает ["type"]=> string(14) "aplication/pdf" Обратите внимание, что «приложение» написано неправильно.

Проверено на компьютере для работы с машиной и его правильном, поэтому может возникнуть проблема с php> 5.3.5

У меня такая же проблема, по какой-то причине я не могу загружать файлы в формате pdf, чтобы быстро выявить ошибки

 $msg = $this->upload->display_errors('<p>', '</p>'); echo $msg; 

Я получил сообщение об ошибке недопустимого типа файла, поэтому я добавил новую строку кода, чтобы отобразить полную информацию о загруженном файле.

 $msg = $this->upload->display_errors('<p>', '</p>'); $msg.=print_r($this->upload->data()); echo $msg; 

затем я копирую тип файла в config / mime.php

 'pdf' => array('application/pdf'), 

и убедитесь, что в качестве типа mime моего загруженного файла используется тот же тип mime. Самое смешное, что ошибка в том, что в mime.php появилась опечатка 🙂

апостроф вместо одиночной кавычки в результате копирования из Интернета, не обращая внимания на используемые кавычки.

Вместо

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

Попробуй это

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

Это работает для меня