2013-10-13 2 views
0

Я пытаюсь загрузить изображение, используя класс загрузки CodeIgniter. Это работало до нескольких дней назад, когда я заметил, что загрузка только определенных изображений вызывает проблемы. В настоящее время я тестирую проблему с изображением с именем «image.jpg». На расширение файла изображение представляет собой JPG-изображение, которое должно возвращать тип mime «image/jpeg». Однако по какой-то причине при загрузке этого изображения ошибки возвращаются в состояние.Codeigniter Загрузить класс MIME issue

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

My config довольно прост и позволяет использовать несколько разных типов изображений, включая JPG.

$config = array(
     'allowed_types' => 'jpg|jpeg|gif|png', 
     'file_name'  => $full, 
     'upload_path' => $path, 
     'max_size'  => 5120 
    ); 

Реальный футболист здесь, когда я эхо вне $this->upload->data(), который возвращает:

Array 
    (
     [file_name] => image.jpg 
     [file_type] => image/png 
     [file_path] => /var/www/tmp/ 
     [full_path] => /var/www/tmp/image.jpg 
     [raw_name] => image 
     [orig_name] => 
     [client_name] => image.jpg 
     [file_ext] => .jpg 
     [file_size] => 50519 
     [is_image] => 1 
     [image_width] => 
     [image_height] => 
     [image_type] => 
     [image_size_str] => 
    ) 

Кто-то знает, почему изображение возвращает FILE_TYPE из image/png, когда изображение должно быть возвращение image/jpeg?

Я проверил config/mimes.php, но все выглядит правильно и в порядке. Любая помощь приветствуется. Заранее спасибо!

Если я установил допустимые типы: allowed_types => '*', похоже, это работает, но я не хочу разрешать все типы файлов. Это была проблема до CodeIgniter 2.0. Версия, которую я сейчас выполняю, составляет 2.1.3, поэтому исправления для 2.0 не актуальны, поскольку в текущих версиях это было «исправлено».

+0

Я также проверил изображение, загрузив его на сайт обнаружения MIME, чтобы убедиться, что он не поврежден и т. Д., И он возвращал правильный «образ/jpeg» MIME на сайт обнаружения. Поэтому где-то в CI Upload Library, он не обнаруживает правильный тип mime. – RhapX

ответ

0

Проведя много исследований по этому вопросу и не найдя ответов, я сам отлаживал ситуацию; полностью. Оказывается, что тип MIME, возвращаемый неправильно, на самом деле правильный; Я предполагаю, что. Исходный файл изображения был создан как PNG, но повторно создан некорректно в другом месте. Использование функции PHP: FINFO: для проверки подлинности файла file_type против подписи и т. Д. - это то, почему он возвращал PNG, а не JPG. Я предполагаю, что это помогает людям создавать фальшивые файлы изображений и загружать их на серверы, поскольку $ _FILES [filename] [file_type] не совсем точен. Это помогает предотвратить их создание, например, .php-файла с внутренним кодом и переименование и загрузку этого файла в формате .jpg.

Надеюсь, это все имеет смысл и помогает кому-то, кто думает, что у них подобная проблема.

Смежные вопросы