为什么 laravels guessExtension() 方法说我的 mp3 文件是 bin?
Why does laravels guessExtension() method say that my mp3 file is bin?
我正在尝试使用 laravel 上传 mp3 文件。当我做
dd(Input::file('mp3')->guessExtension());
它以带有某些 mp3 文件的字符串形式返回“bin”。对于其他文件,这是正确的,它还给我 'mpga'。
这个“bin”作为扩展名是什么意思?
当我执行此规则时,此文件现在未经过我的验证:
$validator = Validator::make($request->all(), [
'mp3' => 'required|mimes:mpga|max:500',
]);
当我转储我的请求时,它说 mimetype 是 mpga ,但它仍然返回错误:'file must be of type mpga'
您可以使用
等服务调试您的文件
并检查验证器是否有任何错误
if ($validator -> passes()) {
// passes
} else {
dd($validator->errors()->all());
}
如果验证器没有像您预期的那样工作,您可以尝试使用另一个验证器,例如 http://pastebin.com/raw/NcL5BLwg
阅读此处:File upload mime-type validation with Laravel 4
为回答您的其中一个问题,返回八位字节流的 'bin':
// Part of the MimeTypeExtensionGuesser class
'application/octet-stream' => 'bin',
Laravel 使用 Symfony 文件,而 Symfony 文件使用 built-in PHP's finfo 来猜测 mime 类型。
因此,您的问题变成了 – 为什么 finfo 将您的一些 MP3 文件检测为 application/octet-stream?考虑到其他文件通过,这个特定的 MP3 文件可能有点问题。
顺便说一下,试试 shell:
$ file -I file.mp3
file.mp3: audio/mpeg; charset=binary
看看你是否得到正确的回应。
我正在尝试使用 laravel 上传 mp3 文件。当我做
dd(Input::file('mp3')->guessExtension());
它以带有某些 mp3 文件的字符串形式返回“bin”。对于其他文件,这是正确的,它还给我 'mpga'。 这个“bin”作为扩展名是什么意思?
当我执行此规则时,此文件现在未经过我的验证:
$validator = Validator::make($request->all(), [
'mp3' => 'required|mimes:mpga|max:500',
]);
当我转储我的请求时,它说 mimetype 是 mpga ,但它仍然返回错误:'file must be of type mpga'
您可以使用
等服务调试您的文件并检查验证器是否有任何错误
if ($validator -> passes()) {
// passes
} else {
dd($validator->errors()->all());
}
如果验证器没有像您预期的那样工作,您可以尝试使用另一个验证器,例如 http://pastebin.com/raw/NcL5BLwg
阅读此处:File upload mime-type validation with Laravel 4
为回答您的其中一个问题,返回八位字节流的 'bin':
// Part of the MimeTypeExtensionGuesser class
'application/octet-stream' => 'bin',
Laravel 使用 Symfony 文件,而 Symfony 文件使用 built-in PHP's finfo 来猜测 mime 类型。
因此,您的问题变成了 – 为什么 finfo 将您的一些 MP3 文件检测为 application/octet-stream?考虑到其他文件通过,这个特定的 MP3 文件可能有点问题。
顺便说一下,试试 shell:
$ file -I file.mp3
file.mp3: audio/mpeg; charset=binary
看看你是否得到正确的回应。