`ImageField` missing validation?
Describe the bug
I'm using the ImageField like so:
ImageField::new('avatar')
->setUploadDir('public/uploads/avatars/')
->setBasePath('uploads/avatars')
->setUploadedFileNamePattern('[year]-[month]-[day]-[contenthash].[extension]')
This works, however I'm able to also upload files that are not images. I would be fine adding this validation manually, but I haven't really found a way to do so
To Reproduce
Install EA 3.2.0, use an ImageField like described above, and upload a file that's not an image
Do you check the mimetype?
How would I go about this? I tried adding constraints to my entity, but I could not make File or Image constraints work, since the field only holds the file path it seems.
You can do this with these annotations in yours entities:
- For 1 image:
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Assert\Regex(
* pattern="/^.*\.(jpg|jpeg|png|gif)$/i",
* match=true,
* message="............"
* )
*/
- For several images:
/**
* @ORM\Column(type="array", nullable=true)
* @Assert\All({
* @Assert\Regex(
* pattern="/^.*\.(jpg|jpeg|png|gif)$/i",
* match=true,
* message="........................................"
* )
* })
*/
I have this (but using vich)
/**
* @Vich\UploadableField(mapping="policy_pdf", fileNameProperty="policy", mimeType="mimeType")
* @Assert\File(
* mimeTypes = {"application/pdf"},
* mimeTypesMessage = "Only PDF's can be uploaded"
* )
* @var File
*/
and my field def:
$policyFile = Field::new('policyFile')
->setFormType(VichFileType::class);
Both very helpful, thanks (apologies for the delayed response, I had to table this project for a while)!
I was indeed already using Vich before, so I don't really mind to keep using it, as I found it to work well for me, and I got it to work for single images just fine. Any ideas on how to make it work for multiple images @parijke? I'm thinking I might need to go the extra step here and do an Images entity, and then just associate them.
@lauraseidler https://www.youtube.com/watch?v=dKX_yREDOmQ&t=619s
Same as https://github.com/EasyCorp/EasyAdminBundle/issues/5227 I created a PR here: https://github.com/EasyCorp/EasyAdminBundle/pull/6258
Closing as fixed in #6258.