проверка изображений laravel 8 работает неправильно

#php #laravel #laravel-8

Вопрос:

Я использую laravel 8 и пытаюсь проверить изображения. У меня может быть только jpeg. Наличие фотографии не требуется и отлично работает, если я ее не добавлю. Однако, когда я добавляю его с изображением jpeg, я получаю сообщение об ошибке: «Фотография должна быть файлом типа: jpeg».

У меня в форме есть enctype=»составные/данные формы».

код:

 public function compute(Request $request){   $rules = [  'vessel' =gt; 'required',  'date' =gt; 'required',  'species' =gt; 'required',  'grade' =gt; 'required',  'temperature' =gt; 'required',  'visualCheck' =gt; 'required',  'skin' =gt; 'required',  'touch' =gt; 'required',  'damage' =gt; 'required',  'eyes' =gt; 'required',  'gills' =gt; 'required',  'gutting' =gt; 'required',  'washing' =gt; 'required',  'boxing' =gt; 'required',  'condition' =gt; 'required',  'checkedBy' =gt; 'required',  'photo' =gt; 'image|mimes:jpeg|min:1|max:2000',  ];   $validator = Validator::make($request-gt;all(), $rules);  if ($validator-gt;fails()) {  return redirect()-gt;back()  -gt;withInput()  -gt;withErrors($validator);  }     $data = $request-gt;all();  $comments = $data["comments"];  try{  $report = new insertQualityReport();  $report-gt;vessel = $data["vessel"];  $report-gt;species = $data["species"];  $report-gt;grade = $data["grade"];  $report-gt;product_temperature = $data["temperature"];  $report-gt;visual_check = $data["visualCheck"];  $report-gt;skin = $data["skin"];  $report-gt;touch = $data["touch"];  $report-gt;damage = $data["damage"];  $report-gt;eyes = $data["eyes"];  $report-gt;gills = $data["gills"];  $report-gt;gutting = $data["gutting"];  $report-gt;washing = $data["washing"];  $report-gt;boxing = $data["boxing"];  $report-gt;conditions_of_fish_box = $data["condition"];  $report-gt;comments = $data["comments"];  $report-gt;checked_by = $data["checkedBy"];  $report-gt;intake_quantity = $data["intakeQuantity"];  $report-gt;rejected_quantity = $data["rejectedProduct"];  $report-gt;processed_quantity = $data["processed"];  $report-gt;date_recorded = $data["date"];  if(isset($data["photo"])){  $report-gt;photo = $data["photo"];  } else {  $report-gt;photo = null;  }    if (!$report-gt;save()) {  return redirect()-gt;back()  -gt;withInput()  -gt;withErrors(["errors" =gt; ["Problem saving report"]]);  }  $report-gt;save();  return redirect()-gt;back()  -gt;withInput()  -gt;with('comments', $comments);  }  catch (Exception $e) {  return redirect()-gt;back()  -gt;withInput()  -gt;withErrors(["errors" =gt; [$e-gt;getMessage()]]);  }    }  

Есть идеи, как это исправить?

Если я удалю правило мимов, оно будет работать нормально

Обновление, форма блейд-файла

 lt;form id="form" action="{{ url('/addqualityreport') }}" onsubmit="return validate(event)" method="POST" enctype="multipart/form-data" name="form"gt; ...other inputs lt;div class="row ms-3 mt-2 mb-2 imput-group"gt; lt;label for="photo" class="col-2 me-5"gt;Upload Photolt;/labelgt; lt;span class="input-group-text col-1 photo" style="min-width:min-content;"gt;JPEG Onlylt;/spangt; lt;input type="file" name="photo" id="photo" class="form-control col-7" style="text-align:left;width:33.5%;height:100%;" accept="image/jpeg"/gt; lt;/divgt; lt;div class="row justify-content-center m-2"gt; lt;input type="reset" id="reset" value="Cancel" class="col-1 m-3" style="width:auto;" /gt; lt;input type="submit" value="Submit" class="col-1 m-3" style="width:auto;" /gt; lt;/divgt; lt;/formgt;  

Ответ №1:

Попробуйте удалить изображение при проверке и используйте только mimes:jpeg.

Об этом:

 'photo' =gt; 'image|mimes:jpeg|min:1|max:2000',  

Комментарии:

1. пробовал, но та же ошибка

2. обновление, я пробовал с разными изображениями, и они работали нормально, но изображение «image.jpeg» не работает

3. можете ли вы показать свою блейд — форму файла

4. добавлено, что есть и другие поля ввода, но, похоже, они работают