validation icon indicating copy to clipboard operation
validation copied to clipboard

files in array

Open gieglas opened this issue 4 years ago • 2 comments

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 avatar Apr 03 '21 12:04 gieglas

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]">
  1. 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.

gieglas avatar Apr 03 '21 15:04 gieglas

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.

lcdss avatar Dec 14 '21 13:12 lcdss