Это не настоящая ошибка, НО наверняка это не то, что вы ожидаете.
У меня есть этот пример кода для загрузки изображений:
if($type=="image/jpg" || $type=="image/jpeg" || $type=="image/pjpeg" || $type=="image/tiff" || $type=="image/gif" || $type=="image/png") {
// make upload
else echo "Incorrect format ....";
Проблема в том, что если я изменю расширение изображения, скажем, на .jpgq или даже .jpg%, и я попытаюсь загрузить его, FF и Chrome скажут, что тип файла - application / octet- поток "и обычно условие будет ложным.
IE, с другой стороны, скажет, что тип файла "image / jpeg", условие будет истинным и файл будет загружен. Конечно, любой браузер, пытающийся прочитать изображение позже, не сможет этого сделать.
Это не ошибка, потому что на msdn.microsoft.com говорится, что: «Если« предложенный »(предоставленный сервером) тип MIME неизвестен (не известен и не является неоднозначным), FindMimeFromData немедленно возвращает этот тип MIME» и «Если предоставленный сервером тип MIME является известным или неоднозначным, буфер сканируется в попытке проверить или получить тип MIME из фактического содержимого».
Мои вопросы:
- Почему IE / сервер знает настоящий тип MIME при загрузке, НО он не сможет прочитать его с сервера?
- Как обойти эту проблему (если файл не имеет правильного расширения, условие должно быть ложным)? Разумно ли проверять формат расширения (а не тип MIME)?
- не рекомендуется ли использовать какое-либо из вышеуказанных расширений? Должен ли я добавить другие?