Php Laravel 5.4图像验证不起作用

Php Laravel 5.4图像验证不起作用,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有点被困在拉雷维尔的图像验证上了。我必须验证文件输入必须是一个图像,为此我使用了经典的laravel验证方法,但我不知道为什么它不起作用 用户控制器 public function createProfile(Request $request) { $phoneNumber=$request->phoneNumber; if (empty($request->except(['userId','token']))){ $data= array(

我有点被困在拉雷维尔的图像验证上了。我必须验证文件输入必须是一个图像,为此我使用了经典的laravel验证方法,但我不知道为什么它不起作用

用户控制器

public function createProfile(Request $request) {
    $phoneNumber=$request->phoneNumber;
    if (empty($request->except(['userId','token']))){
        $data= array(
            'nickName' => '',
            'profilePic' => '',
            'phoneNumber' => '',
            'userHeight' => '',
            'userWeight' => '',
            'userVertical' => '',
            'userSchool' => '',
            'homeTown' => '',
        );
        $this->setMeta("200", "Success");
        $this->setData("userDetails", $data);
        return response()->json($this->setResponse());
    }
    if($phoneNumber) {
        $validationData= array(
            'phoneNumber' => $phoneNumber,
        );
        $validationRules = array(
            'phoneNumber' => [
                'regex:/^[0-9]+$/',
                'min:10',
                'max:15',
                Rule::unique('users')->ignore($request->userId, 'userId'),

            ]
        );
        if($request->has('profilePic')){
            $validationData['profilePic'] = $request->profilePic;
            $validationRules['profilePic'] = 'image|mimes:jpeg,bmp,png';

        }
        $validator = Validator::make($validationData,$validationRules);
        if ($validator->fails()) {
            $errors = $validator->errors();
            if ($errors->first('phoneNumber')) {
                $message = $errors->first('phoneNumber');
            }  else if ($errors->first('profilePic')) {
                $message = $errors->first('profilePic');
            } else {
                $message = Constant::MSG_422;
            }
            $this->setMeta("422", $message);
            return response()->json($this->setResponse());
        }
    }
    $homeTown = $request->homeTown;
     $filename='';
    $profilePic=$request->file('profilePic');
    if(!empty($profilePic)) {
        $destinationPath = public_path() . '/uploads/users';
        $filename = "image_" . Carbon::now()->timestamp . rand(111, 999) . ".jpg";
        $profilePic->move($destinationPath, $filename);
    }

    $user = User::where('userId',$request->userId)->first();
    if($request->hasFile('profilePic')){
        $user->profilePic = $filename;
    }
    $user->nickName=$request->nickName;
    $user->phoneNumber=$request->phoneNumber;
    $user->userHeight=$request->userHeight;
    $user->userWeight=$request->userWeight;
    $user->userVertical=$request->userVertical;
    $user->userSchool=$request->userSchool;
    $user->homeTown=$homeTown;
    $user->save();
    $this->setMeta("200", "Profile Changes have been successfully saved");
    $this->setData("userDetails", $user);
    return response()->json($this->setResponse());
}

我认为您的验证不起作用的原因是您在其中添加了规则:

if($request->has('profilePic')){
这需要是
$request->hasFile('profilePic')


希望这有帮助

我认为您的验证不起作用的原因是您在其中添加了规则:

if($request->has('profilePic')){
这需要是
$request->hasFile('profilePic')


希望这有帮助

你可以这样用,我觉得这样更好

     if($request->hasFile('profilePic')){                  
       $rules = array(
         'profilePic' => 'required | mimes:jpeg,jpg,png',
        );

    }      
   $validator = Validator::make($request->all(), $rules);

你可以这样用,我觉得这样更好

     if($request->hasFile('profilePic')){                  
       $rules = array(
         'profilePic' => 'required | mimes:jpeg,jpg,png',
        );

    }      
   $validator = Validator::make($request->all(), $rules);

只需使用这个进行验证。若你们必须处理这种情况,那个么就进行一步一步的调试

$this->validate($request, [
   'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:5120',
   'description' => 'required'

]))

只需将其用于验证。若你们必须处理这种情况,那个么就进行一步一步的调试

$this->validate($request, [
   'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:5120',
   'description' => 'required'

]))

您是否检查了$\u文件对象的profilePic密钥?没有。稍后我将检查是否插入到数据库中,并尝试使用print\r($\u文件)进行打印;是否找到正确的值。然后检查验证。是否检查了$\u FILES对象的profilePic键?否。稍后我将检查是否插入到数据库中,并尝试使用print\r($\u文件)进行打印;是否找到正确的值。然后检查验证。