关于 ImageUploadHandler.php 类的疑问?
上传的图片的后缀名首先经过了表单的验证,教程代码如下
class UserRequest extends FormRequest
{
...
public function rules()
{
return [
'name' => 'required|between:3,25|regex:/^[A-Za-z0-9\-\_]+$/|unique:users,name,' . Auth::id(),
'email' => 'required|email',
'introduction' => 'max:80',
//这里对传入的图片类型已经进行了验证
'avatar' => 'mimes:jpeg,bmp,png,gif|dimensions:min_width=200,min_height=200',
];
}
...
}
为何ImageUploadHandler.php 类中还要继续对后缀名进行重复验证,教程代码如下
<?php
namespace App\Handlers;
class ImageUploadHandler
{
...
public function save($file, $folder, $file_prefix)
{
...
// 此处仍旧进行第二次验证后缀名
if ( ! in_array($extension, $this->allowed_ext)) {
return false;
}
...
}
这两次验证都是后台进行的重复验证,是否多此一举?
关于 LearnKu
@soypablo 我明白你的意思了,我理解他应该是这样的,第一次是验证的 Request 数据,第二次是验证的 ImageUploadHandler 这个类的数据,因为不能保证使用这个类的时候数据是被验证过的,单单从这个过程来说,应该是没有意义了。
我自己用的时候就把整个类都改了,将验证单独提取出来了,如果数据是被验证过了,就不去验证,如果没有验证就使用我自定义的方法前置一下。
完整代码 你可以参考下