Когда я загружаю хорошо сформированный файл MP3, Laravel 4 говорит мне, что это не audio/mp3 а application/octet-stream , из-за чего эта проверка не выполняется: 
 $validator = Validator::make( array('trackfile' => Input::file('trackfile')), array('trackfile' => 'required|mimes:mp3') ); if($validator->fails()) return 'doesn\'t works because mime type is '.Input::file('trackfile')->getMimeType(); else return 'it works!'; 
  Почему он не загружает файл в качестве audio/mp3 файла? 
  (Я уже добавил 'files' => true для объявления формы) 
редактировать
Встроенный валидатор по-прежнему рассматривал некоторые mp3-файлы как приложение / октет-поток, поэтому вы преобразовали исходный файл с тем или иным программным обеспечением.
Я, наконец, использовал класс MimeReader пользователем Shane , который полностью работает. Мне все еще интересно, почему так сложно обнаружить правильный тип мим.
Я реализовал его как валидатор в Laravel:
MimeReader.phps в app/libraries/MimeReader.php (смотреть расширение)   Расширьте Validator Laravel (я положил его в свой конструктор BaseController ) 
 Validator::extend('audio', function($attribute, $value, $parameters) { $allowed = array('audio/mpeg', 'application/ogg', 'audio/wave', 'audio/aiff'); $mime = new MimeReader($value->getRealPath()); return in_array($mime->get_type(), $allowed); }); 
app/lang/[whatever]/validation.php (в моем случае ключ звучит) audio как правило!  Пример: 'file' => 'required|audio' , где file относится к Input::file('file')   Laravel рассматривал файлы audio/mpeg как .mpga а не .mp3 .  Я исправил его в MimeTypeExtensionGuesser.php (в библиотеке Symfony), а также audio/ogg , которые считались .oga .  Возможно, тип аудио mime зависит от того, какой программный кодер использовался. 
  Другой метод – обходить валидатор и проверять тип mime непосредственно в контроллере, используя Input::file('upload')->getMimeType() как сказал шейх Хера. 
  Вероятно, из-за того, что тип mime файла mp3 – это audio/mpeg или может быть так, он не может распознать mime_content_type и сообщает application/octet-stream как общий / резервный тип.  Вы можете попробовать это правило (пример ниже) вместо (не проверено / уверенно), потому что audio/mpeg – правильный тип mime для mp3 соответствии с rfc3003 : 
 array('trackfile' => 'required|mimes:audio/mpeg,mp3') 
  Кроме того, вы можете вручную проверить тип mmie используя что-то вроде этого: 
 $file = Input::file('upload'); if($file->getMimeType() == 'audio/mpeg') { // valid } else { // invalid } 
Обновить:
  Специально для mp3 файлов вы также можете использовать библиотеку getID3, которая похожа на расширение Php PECL id3 , если вы ее используете, вы также сможете использовать ID3 tag файла и получать информацию, такую как title , artist , album , year , genre и т. д. 
  Если вы используете его, вы должны загрузить его вручную из данной ссылки ( getid3 ) и поместить его в папку внутри app , возможно, app/libs/ и просто поместите папку getid3 из извлеченного источника в папку libs затем в свой composer.json файл добавить запись внутри classmap раздела autoload например: 
 // ... "app/tests/TestCase.php", "app/libs/getid3" 
  Затем запустите composer dump-autoload из командной строки терминала / терминала, и вы готовы ее использовать.  Чтобы использовать его, попробуйте следующее: 
 $file = Input::file('upload'); // assumed name of the file input is upload $path = $path = $file->getRealPath(); $id3 = new getID3(); $tags = $id3->analyze($path); if(is_array($tags) && array_key_exists('audio', $tags)) { // valid dd($tag['tags']); } 
  Для действительного mp3 файла вы получите такой массив: 
 array (size=2) 'id3v1' => array (size=6) 'title' => array (size=1) 0 => string '46. Piya Basanti' (length=16) 'artist' => array (size=1) 0 => string '(Freshmaza.com)' (length=15) 'album' => ... 
  Если вы уже установили или можете установить расширение PECL используя (из терминала) следующую команду: 
 pear install pecl/id3 
Тогда вы можете обычно использовать
 $tags = id3_get_tag( "path/to/example.mp3" ); print_r($tag); 
В приведенном выше примере будет выведено нечто похожее:
 Array ( [title] => DN-38416 [artist] => Re:\Legion [album] => Reflections [year] => 2004 [genre] => 19 ) 
Проверьте руководство Php .