Internet Explorer не может загрузить файл MIME-типа - PullRequest
2 голосов
/ 16 апреля 2011

Я собрал несколько скриптов из разных интернет-источников, чтобы заставить форму работать. Я столкнулся с проблемой, которую не могу решить. Созданная мной форма позволяет пользователю отправлять свои данные в полях, а также прикреплять изображения (проверка: формат .EPS или .JPG).

Скрипт отлично работает в Firefox и Safari, но не в Internet Explorer. В IE, независимо от того, прикрепляете ли вы изображение правильного типа или нет, возвращается ошибка неправильного типа файла. Так что по какой-то причине кажется, что IE не проверяет тип файла, как того требует PHP.

<?php
/* ....
   snip
   .... */
      $filetype=$_FILES["prosp_client_logo"]["type"];
/* ....
   snip
   .... */
      elseif($filetype=="application/postscript" or $filetype=="image/jpg" or $filetype=="image/jpeg") {
/* ....
   snip
   .... */
?>

Пожалуйста, дайте мне знать, если вам нужны какие-либо разъяснения.

1 Ответ

4 голосов
/ 16 апреля 2011

http://www.php.net/manual/en/features.file-upload.php#75932

Ричард Дейви, богатый в corephp dot co dot uk 22-Jun-2007 12: 05
[...] вы можете быть склонны проверять обновление на основе сообщаемого им mime-типа из массива $ _FILES. Однако будьте осторожны с этим - он устанавливается браузером , а не PHP или веб-сервером, и браузеры не совместимы (что нового?!)

IE отправит свой собственный mime-type (в зависимости от своей файловой системы) для вложения, который часто может отличаться от того, что вы ожидаете в своем коде. Эти данные также могут быть подделаны, поэтому лучше не доверять тому, что браузер говорит о файле mime-type.

Также:

http://www.php.net/manual/en/features.file-upload.php#53133

Кит в phpdiary dot org 24-May-2005 11: 14
[...] Лучше всего, чтобы вы проверили расширение файла и использовали exif_imagetype () для проверки правильности изображений. Многие люди предлагают использовать getimagesize (), который возвращает массив, если файл действительно является изображением, и false в противном случае, но exif_imagetype () работает намного быстрее. (в инструкции так сказано)

...