CodeIgniter «Тип файла, который вы пытаетесь загрузить, не разрешен».

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

Я пытаюсь загрузить изображение png, и я получаю следующую ошибку:

Тип файла, который вы пытаетесь загрузить, не разрешен.

Я следил за этим руководством CI для создания моего кода: http://codeigniter.com/user_guide/libraries/file_uploading.html

Вот что я получил:

посмотреть файл:

[..] <?= form_open_multipart() ?> <input type="file" name="userfile" size="20" /> <br /><br /> <input type="submit" value="upload" /> <?= form_close() ?> [..] 

Мой контроллер:

  $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); $xx = array('upload_data' => $this->upload->data()); $mimetype= $xx['upload_data']['file_type']; var_dump('Mime: ' . $mimetype); var_dump($_FILES); if ( !$this->upload->do_upload()) { Notice::add($this->upload->display_errors(), 'error'); } else { $data['upload_data'] = $this->upload->data(); } 

Как вы можете видеть, я пытаюсь var_dump var_dump mime, и результат пуст.

Когда я делаю var_dump($_FILES) похоже, что все в порядке:

 array(1) { ["userfile"]=> array(5) { ["name"]=> string(14) "imageofm.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(18) "/var/tmp/php5cDAZJ" ["error"]=> int(0) ["size"]=> int(358) } } 

Кроме того, в моей config/mimes.php я получил 'png' => array('image/png', 'image/x-png'), line.

Однако это происходит для всех изображений (еще не пробовали другие расширения).

Я был бы признателен за каждую попытку.

Просто отредактируйте файл mimes.php в приложении / config / mimes.php и замените строку для csv следующим образом:

 'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel') 

Добавьте 'text / plain' в массив CSV в config / mimes.php в $ mimes массивы

Замена системы codeigniter 2.1.0 / библиотек / upload.php с версией download.php версии 2.1.2 решает проблему. Надеюсь это поможет

 $this->load->library('upload'); $this->upload->set_allowed_types('*'); class MY_Upload extends CI_Upload { function is_allowed_filetype() { if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types)) { $this->set_error('upload_no_file_types'); return FALSE; } if (in_array("*", $this->allowed_types)) { return TRUE; } $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe'); foreach ($this->allowed_types as $val) { $mime = $this->mimes_types(strtolower($val)); // Images get some additional checks if (in_array($val, $image_types)) { if (getimagesize($this->file_temp) === FALSE) { return FALSE; } } if (is_array($mime)) { if (in_array($this->file_type, $mime, TRUE)) { return TRUE; } } else { if ($mime == $this->file_type) { return TRUE; } } } return FALSE; } } 

Другое решение – включить extension=php_fileinfo.dll в php.ini

Я просто добавляю эту строку в mime.php в строке 34 и теперь загружается pptx. проверить его на реальном сервере

'pptx' => array ('application / vnd.openxmlformats-officedocument.wordprocessingml.document', 'application / zip'),