Laravel请求文件扩展名与提交的Blob不同

时间:2018-07-02 20:36:55

标签: laravel laravel-5

我在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 :(得分:0)

问题在于文件的编码方式,无论扩展名如何,该文件都会被mime类型检测到。如果您实际上要将文件转换为mp3,则需要为此使用编解码器。我相信FFMpeg可以使用webm文件,另外还有一个Laravel软件包:https://github.com/pascalbaljetmedia/laravel-ffmpeg

答案 1 :(得分:-1)

您尝试过getClientOriginalExtension()吗?

  

extension方法将尝试根据其内容来猜测文件的扩展名。此扩展名可能与客户端提供的扩展名不同

file()返回UploadedFile的实例,该实例具有方法getClientOriginalExtension()

  

返回原始文件扩展名。

     

它是从上载的原始文件名中提取的。因此,不应将其视为安全值。