Jim*_*ers 4 php extension-methods laravel
我正在尝试使用laravel上传一个mp3文件.而当我这样做
dd(Input::file('mp3')->guessExtension());
Run Code Online (Sandbox Code Playgroud)
它给了我带有某些mp3文件的字符串中的" bin ".对于其他文件,这是正确的,它给了我'mpga'.这个" bin "作为扩展意味着什么?
当我执行此规则时,此文件现在不会通过我的验证:
$validator = Validator::make($request->all(), [
'mp3' => 'required|mimes:mpga|max:500',
]);
Run Code Online (Sandbox Code Playgroud)
当我转储我的请求时,它说mimetype是mpga,但它仍然返回错误:'文件必须是mpga类型'
要回答您的一个问题,为八位字节流返回'bin':
// Part of the MimeTypeExtensionGuesser class
'application/octet-stream' => 'bin',
Run Code Online (Sandbox Code Playgroud)
Laravel使用Symfony File和Symfony File使用内置的PHP的finfo来猜测mime类型.
因此,您的问题变成了 - 为什么finfo会将某些MP3文件检测为application/octet-stream?鉴于其他文件通过,这个特定的MP3文件有可能出现一些问题.
顺便说一句,试试shell:
$ file -I file.mp3
file.mp3: audio/mpeg; charset=binary
Run Code Online (Sandbox Code Playgroud)
看看你是否得到了正确的答复.
您可以使用以下服务调试文件
并检查验证器是否有错误
if ($validator -> passes()) {
// passes
} else {
dd($validator->errors()->all());
}
如果验证器未按您的预期工作,您可以尝试使用另一个验证器,例如http://pastebin.com/raw/NcL5BLwg
阅读此处:使用 Laravel 4 进行文件上传 mime 类型验证
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |