但是当我像这样将其提交给我的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
。
答案 0 :(得分:0)
问题在于文件的编码方式,无论扩展名如何,该文件都会被mime类型检测到。如果您实际上要将文件转换为mp3,则需要为此使用编解码器。我相信FFMpeg可以使用webm文件,另外还有一个Laravel软件包:https://github.com/pascalbaljetmedia/laravel-ffmpeg。
答案 1 :(得分:-1)
您尝试过getClientOriginalExtension()吗?
extension
方法将尝试根据其内容来猜测文件的扩展名。此扩展名可能与客户端提供的扩展名不同
file()
返回UploadedFile的实例,该实例具有方法getClientOriginalExtension()
返回原始文件扩展名。
它是从上载的原始文件名中提取的。因此,不应将其视为安全值。