laravel 判断文件类型,图片类型可以识别,php 文件不能识别该怎么办?
1,
rule里:png,jpg,doc 等识别ok,但 .php .sh 不能识别
‘upfile’ => [‘required’,’file’,”mimes:$allowFileType”], // txt text php sh ,但一个 php 文件不能通过规则
2,
laravel提供的extension()方法:// png jpg doc 等识别ok, 但 php sh 识别是空
return $fileType = $request->file(‘upfile’)->extension();// echo 输出是空的
3,
原生php :可以识别 php sh 等类型的文件
$fi = new \finfo(FILEINFO_MIME);
return $fi->file($upfile);// 比如php文件,可以打印出:text/x-php; charset=utf-8
该如何优雅的得到正确结果? 总不能让我用回原生php吧
$request->file('file')->getClientOriginalExtension();
你可以使用这个方法,从原始文件名中提取扩展名,但你要知道,文件扩展名是可伪装的,该方法没有进行深层次的mime类型检查,所以它不应被视为一个安全值,需要你自行评估该行为的安全性。刚才花了点时间查看源码,为你找到一个更友好,更具扩展性的解决办法,创建
App\Providers\MimeTypesExtendServiceProvider.php
文件:在
config/app.php
的providers
注册刚才的服务App\Providers\MimeTypesExtendServiceProvider::class
,搞定。