Я много искал и нашел много вопросов относительно этой проблемы, к сожалению, ни один из ответов не помог мне.
Я пытаюсь загрузить изображение 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'),