diff options
Diffstat (limited to 'app/Http/Requests/FileUploadRequest.php')
| -rw-r--r-- | app/Http/Requests/FileUploadRequest.php | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/app/Http/Requests/FileUploadRequest.php b/app/Http/Requests/FileUploadRequest.php new file mode 100644 index 0000000..f4302b8 --- /dev/null +++ b/app/Http/Requests/FileUploadRequest.php @@ -0,0 +1,59 @@ +<?php + +namespace App\Http\Requests; + +use App\Rules\MimeTypeRule; +use Illuminate\Foundation\Http\FormRequest; + +class FileUploadRequest extends FormRequest +{ + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + // Public upload system - everyone can upload + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> + */ + public function rules(): array + { + $config = config('fileupload'); + + return [ + 'files' => [ + 'required', + 'array', + 'max:' . $config['max_files_per_upload'], + ], + 'files.*' => [ + 'required', + 'file', + 'max:' . $config['max_file_size'], // in KB + new MimeTypeRule($config['allowed_mimes']), + ], + ]; + } + + /** + * Get custom messages for validator errors. + */ + public function messages(): array + { + $config = config('fileupload'); + + return [ + 'files.required' => 'Please select at least one file to upload.', + 'files.array' => 'Invalid file upload format.', + 'files.max' => 'You can upload a maximum of ' . $config['max_files_per_upload'] . ' files at once.', + 'files.*.required' => 'One or more files are missing.', + 'files.*.file' => 'One or more uploads are not valid files.', + 'files.*.max' => 'One or more files exceed the maximum size of ' . $config['max_file_size'] . 'KB.', + ]; + } +} |
