Я был озадачен сначала, почему мои файлы не загружали для некоторых пользователей, и я узнал, что это были все, кто не использовал хрома, который был браузером, который я тестировал.
В основном я делаю проверку файла, чтобы удостовериться, что они только могут загрузить mp3s.
Это это работало на хром, но не Firefox.
if ($_FILES['uploaded']['type']=="audio/mp3")
Это работало на Firefox, но не хром.
$_FILES['uploaded']['type']=="audio/mpeg"
Кто-либо мог объяснить, почему это происходит? Я думал бы, что оба браузера смогут понять или или... Есть ли какие-либо другие браузеры, которые я, возможно, должен был бы взволновать по поводу раздражительных типов пантомимы как они?
Править: Если, что предложенный Pekka верен, каков был бы лучший способ проверить на определенный тип пантомимы?
Согласно w3schools , audio / mpeg
является правильным типом.Но это не имеет значения, типы MIME могут быть разными, на них категорически нельзя полагаться при проверке файлов. Несоответствия - это правило, и этого следует ожидать.
Чтобы идентифицировать файл MP3, возможно, вам поможет пакет getid3 :
getID3 () - это PHP-скрипт, который извлекает полезную информацию из MP3 и других форматов мультимедийных файлов.
Изменить: У IANA есть официальный список типов MIME здесь . Там нет упоминания о mp3, так что это ошибочное поведение со стороны Chrome.
Правка 2: Лучше всего на стороне сервера определить MIME-тип файла с расширением finfo . Он пытается определить тип файла путем «анализа содержимого», ища конкретные характеристики определенных типов файлов в первых нескольких байтах данных. В этом процессе типы MIME также могут различаться, но, по крайней мере, они согласованы на одном сервере, поэтому у вас больше не будет проблем с браузером.
Каждый браузер может реализовывать стандарты W3c немного по-разному, к большому огорчению всех разработчиков (#rant) ...
Полагаться на метаинформацию, генерируемую пользователем / браузером, крайне ненадежно и не рекомендуется. Если это ваш единственный механизм безопасности / работоспособности, то кто-то, желающий нанести вред вашей системе, может вручную ввести поле метатипа с помощью специального запроса на == "audio / mpeg", а затем загрузить любой исполняемый файл. Если вы действительно хотите быть уверены, что вы должны полностью изучить данные на стороне сервера после того, как они были загружены, прежде чем принимать их в свою постоянную систему хранения / производства. Или о менее зловещем примечании ... пользователь с другим браузером, который вы ранее не тестировали, может захотеть загрузить законный mp3-файл, но он может не объявлять свой тип mime как audio / mpeg или audio / mp3, и тогда вы откажетесь от доступа в систему ...