Я пытаюсь загрузить mp3 файл с помощью laravel. И когда я делаю
dd(Input::file('mp3')->guessExtension());
Это возвращает менябункер«в строке с определенными mp3-файлами. С другими файлами это правильно, и это возвращает мне ‘mpga’.
Что делает это «бункер«как расширение означает?
Этот файл не проходит мою проверку сейчас, когда я делаю это правило:
$validator = Validator::make($request->all(), [
'mp3' => 'required|mimes:mpga|max:500',
]);
Когда я отправляю запрос, он говорит, что mimetype — это mpga, но все равно возвращается с ошибкой: ‘Файл должен иметь тип MPGA’
Вы можете отлаживать файлы, используя такие сервисы, как
и проверьте, есть ли какая-либо ошибка в валидаторе
if ($validator -> passes()) {
// passes
} else {
dd($validator->errors()->all());
}
Если валидатор не работает так, как вы ожидаете, вы можете попробовать использовать другой валидатор, например http://pastebin.com/raw/NcL5BLwg
Читайте здесь: Проверка MIME-типа при загрузке файлов с помощью Laravel 4
Чтобы ответить на один из ваших вопросов, для потоков октетов возвращается «bin»:
// Part of the MimeTypeExtensionGuesser class
'application/octet-stream' => 'bin',
Laravel использует Symfony File и Symfony File встроенный PHP Finfo угадать тип пантомимы.
Поэтому ваш вопрос звучит так: почему finfo обнаруживает некоторые ваши MP3-файлы как application / octet-stream? Существует вероятность, что что-то не так с этим конкретным файлом MP3, учитывая, что другие файлы проходят.
Кстати, попробуйте в оболочке:
$ file -I file.mp3
file.mp3: audio/mpeg; charset=binary
Посмотрите, получите ли вы правильный ответ.