disallowedExtensions = $disallowedExtensions; } /** * Run the validation rule. * * @param string $attribute * @param mixed $value * @param \Closure(string, ?string=): \Illuminate\Translation\PotentiallyTranslatedString $fail */ public function validate(string $attribute, mixed $value, Closure $fail): void { if ($value && $value->isValid()) { // Get the file extension $extension = strtolower($value->getClientOriginalExtension()); // Check if the extension is in the disallowed list if (in_array($extension, $this->disallowedExtensions)) { $fail("The file type '{$extension}' is not allowed."); } } else { $fail("The uploaded file for '{$attribute}' is invalid."); } } }