Intereting Posts
Как узнать, является ли запрос ajax-запросом? mod_rewrite VS относительные пути Сделайте страницы отображения Chrome даже по 500 или 404 кодам (ведите себя как Firefox) Преобразование текста в ссылку – проблема с регулярным выражением php Использование контроллера для обработки возвращаемых настраиваемых файлов css и javascript с помощью codeigniter Убедитесь, что UNIQUE-строка уже существует с помощью findBy в ManyToMany, любом обходном решении или рабочем решении? router.js Функция не выполнена Получите ближайшие места на Картах Google, используя пространственные данные MySQL Отключить предупреждения при загрузке неверно сформированного HTML с помощью DomDocument (PHP) Обновление нескольких строк в Codeigniter Вставка данных в таблицу в базе данных WordPress с использованием WordPress $ wpdb PHP, если условие с булевым Как читать выборку (PDO :: FETCH_ASSOC); Возврат значения в функции конструктора класса Как планировать мой веб-проект перед запуском кода?

mime type validation в laravel 4 не работает

Я пытаюсь проверить размер файла и тип mime загруженного файла (mp3-файл) в laravel. Но проверка, похоже, только начинается, когда я загружаю изображение (gif, png). Когда я загружаю файл mkv размером 100 Мб, проверка, похоже, в порядке с ним. Вот мой текущий код:

$file = Input::file('audio_file'); $file_rules = array('audio_file' => 'size:5242880|mimes:mp3'); //also tried mpeg $file_validator = Validator::make(Input::file(), $file_rules); if($file_validator->fails()){ //return validation errors }else{ //always goes here and succeeds } 

Любые идеи, что не так с моим кодом? Заранее спасибо!

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

 $file_rules = array('audio_file' => 'size:5242880|mimes:audio/mpeg,audio/mp3,audio/mpeg3'); 

В соответствии с этим , «audio / mpeg» является правильным MIME-типом для mp3-файлов (некоторые браузеры также используют «audio / mpeg3» или «audio / mp3»).

Если это не сработает, вы можете получить тип MIME перед проверкой:

 $file = Input::file('audio_file'); $mimeType = $file->getMimeType(); $supportedTypes = ['audio/mpeg', 'audio/mpeg3', 'audio/mp3']; if (in_array($mimeType, $supportedTypes)) { // validate or simply check the file size here } else { // do some other stuff } 

Выбранный ответ не работает: $file->getMimeType() возвращает непредсказуемые результаты. Файлы типа .css , .js , .po , .xls и многое другое получают text/plain тип mime. Поэтому я разместил свое решение там https://stackoverflow.com/a/26299430/1331510