mp3 загрузить mimetype, пропущенный Firefox специально - PullRequest
1 голос
/ 26 февраля 2012

У меня есть загрузка файла, он отлично работает во всем, кроме Firefox, он постоянно говорит, что mimetype не поддерживается. Это мой код:

 if(isset($_POST[submitfile]))
 {
     $uploadedsong = $_FILES['soup']['tmp_name'];
           $mimetype = $_FILES['soup']['type'];
                 if($mimetype=="audio/mpeg"||$mimetype=="audio/x-mpeg-3"||$mimetype=="audio/mp3"||$mimetype=="audio/x-mpeg"||$mimetype=="audio/x-mp3"||$mimetype=="audio/mpeg3"||$mimetype=="audio/x-mpeg3"||$mimetype=="audio/mpg"||$mimetype=="audio/x-mpg"||$mimetype=="audio/x-mpegaudio")
                 {

Это позволяет загружать файлы для всех браузеров, кроме Firefox! очень расстраивает, я не знаю, почему это происходит. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

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

Firefox здесь не делает ничего плохого, это неправильные ожидания, которые вы заложили в свой скрипт - из Руководства по PHP & shy; Документы :

$_FILES['userfile']['type']

Тип файла mime, если браузер предоставил эту информацию. Примером может быть «image / gif». Этот тип MIME, однако, не проверяется на стороне PHP и поэтому не принимает его значение как должное.

Таким образом, использование этой информации ограничено, оно не является строгим.

Вы должны записать, какой тип mime был загружен, потому что вы не можете проверить все комбинации браузер / ОС.

Проверка файла также необходима, если вы хотите убедиться, что он соответствует соглашению mp3-файла. Рядом с fileinfo & shy; Docs (для всех файлов) есть php-reader и Zend_Mimme_Magic и множество других библиотек, связанных с mp3-файлами.

1 голос
/ 26 февраля 2012

Попробуйте использовать это, чтобы получить тип пантомимы

$file_info = new finfo(FILEINFO_MIME); $mime_type = $file_info->file($file);

...