Почему метод предположения догадывания () laravels говорит, что мой mp3-файл — bin?

Я пытаюсь загрузить mp3 файл с помощью laravel. И когда я делаю

dd(Input::file('mp3')->guessExtension());

Это возвращает менябункер«в строке с определенными mp3-файлами. С другими файлами это правильно, и это возвращает мне ‘mpga’.
Что делает это «бункер«как расширение означает?

Этот файл не проходит мою проверку сейчас, когда я делаю это правило:

$validator = Validator::make($request->all(), [
'mp3'      => 'required|mimes:mpga|max:500',
]);

Когда я отправляю запрос, он говорит, что mimetype — это mpga, но все равно возвращается с ошибкой: ‘Файл должен иметь тип MPGA’

4

Решение

Вы можете отлаживать файлы, используя такие сервисы, как

http://mime.ritey.com/

и проверьте, есть ли какая-либо ошибка в валидаторе

if ($validator -> passes()) {
// passes
} else {
dd($validator->errors()->all());
}

Если валидатор не работает так, как вы ожидаете, вы можете попробовать использовать другой валидатор, например http://pastebin.com/raw/NcL5BLwg

Читайте здесь: Проверка MIME-типа при загрузке файлов с помощью Laravel 4

1

Другие решения

Чтобы ответить на один из ваших вопросов, для потоков октетов возвращается «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

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

8

По вопросам рекламы [email protected]