#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. добавлено, что есть и другие поля ввода, но, похоже, они работают