Как в реквесте отвалидировать картинки base 64 Laravel?
Всем привет подскажите пожалуйста как в реквесте отвалидировать картинки base 64 Laravel?
вот реквест
public function rules(CategoryRepository $categoryRepository): array
{
dd($this->request->all());
$categoryIds = $this->request->get('categories');
$enteredAttributes = $this->request->get('attributes');
if ($categoryIds) {
$this->session()->flash('selectedCategoryId', $categoryIds);
}
if ($enteredAttributes) {
$this->session()->flash('enteredAttributes', $enteredAttributes);
}
$items = [];
if ($categoryIds) {
$category = $categoryRepository->getSelectedCategory($categoryIds);
foreach ($category->allAttributes() as $attribute) {
$rules = [
$attribute->required ? 'required' : 'nullable',
];
if ($attribute->isInteger()) {
$rules[] = 'integer';
} elseif ($attribute->isFloat()) {
$rules[] = 'numeric';
} else {
$rules[] = 'string';
$rules[] = 'max:255';
}
if ($attribute->isSelect()) {
$rules[] = Rule::in($attribute->variants);
}
$items['attributes.' . $attribute->id] = $rules;
}
}
return array_merge([
'categories' => 'required|array',
'title' => 'required|string',
'price' => 'required|string',
'content' => 'required|string',
'regionId' => 'required|string',
'street' => 'string',
], $items);
}
Ответы (1 шт):
Автор решения: InDevX
→ Ссылка
На днях делал в Lumen через кастомные правила.
use Illuminate\Support\Facades\Validator;
private static function addCustomValidationRule(string $name, array $mime_types):void {
Validator::extend($name, function($attribute, $value, $params, $validator) use ($mime_types) {
$f = finfo_open();
$result = finfo_buffer($f, base64_decode($value), FILEINFO_MIME_TYPE);
return in_array($result, $mime_types);
});
}
self::addCustomValidationRule('is_image', ['image/bmp', 'image/gif', 'image/jpeg', 'image/png']);
$validation = Validator::make(['image' => $base64img ], [
'image' => 'is_image'
]);
if ( $validation->fails() ) {
return response()->json(['error' => true, 'error_text' => $validation->fails()], 409);
}
