rakit / validation

PHP Standalone Validation Library
MIT License
834 stars 143 forks source link

files in array #136

Open gieglas opened 3 years ago

gieglas commented 3 years ago

hi,

I am trying to validate files in an array, for example my HTML looks like this:


<input type="file" name="name[0][avatar]">
<input type="file" name="name[1][avatar]">
<input type="file" name="name[2][avatar]">

Note that the number of avatars is dynamic, the users can add as many avatars as the want.

I tried something like $validation = $validator->validate($_FILES, ['name.*.avatar' => 'required|uploaded_file|max:2M|mimes:jpeg,png']); but doesn't seem to work. Looks like if my file is in an array the way I display above, the uploaded_file validation doesn't seem to work, as if it cannot find the uploaded file.

Any ideas?

Note, i use Slim framework. At first i didnt think $_FILES worked with Slim, but it does.

gieglas commented 3 years ago

Ok weird fact. I was breaking my head why this was happening, as I had previously done array validations like that with uploaded_files. .

Seems that if the array contains both files and other inputs (i.e. text) the uploaded_file validations dont work for some reason. Ok its a bit hard to explain but i'll try. The files are simply ignored

  1. This works fine

    <input type="file" name="name[0][avatar]">
    <input type="file" name="name[0][icon]">
  2. This DOES NOT work

    <input type="file" name="name[0][avatar]">
    <input type="text" name="name[0][username]">

EDIT:

Same thing seems to going on with mimes:pdf validations.

lcdss commented 2 years ago

I had this exactly problem yesterday, trying to validate an array with both files and text. At the end of the day, I decide to make two validations, one for the files and other for the text fields.