Расширение файла запроса Laravel отличается от представленного Blob - PullRequest
0 голосов
/ 02 июля 2018

Я записал аудио в своем браузере Chrome, и это привело к появлению BLOB-объекта: Console response

Но когда я отправляю это в свое приложение Laravel, вот так:

$name = implode('.', [str_random(65), $request->file('audio')->extension()]);
Storage::disk('s3')->putFileAs('files', $request->file('audio'), $name);
$mime = $request->file($file)->getMimeType(); 

Расширение: .webm вместо .mp3 И тип пантомимы video/webm вместо audio/mp3.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Проблема в том, как кодируется файл, который определяется типом mime независимо от расширения. Если вы действительно хотите конвертировать файл в mp3, вам понадобится кодек для этого. Я верю, что FFMpeg будет работать с файлами webm, плюс для этого есть пакет Laravel: https://github.com/pascalbaljetmedia/laravel-ffmpeg.

0 голосов
/ 05 июля 2018

Вы пробовали getClientOriginalExtension () ?

Метод extension попытается угадать расширение файла на основе его содержимого. Это расширение может отличаться от расширения, которое было предоставлено клиентом

file() возвращает экземпляр UploadedFile , который имеет метод getClientOriginalExtension()

Возвращает исходное расширение файла.

Извлечено из исходного загруженного имени файла. Тогда это не должно рассматриваться как безопасное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...