diff --git a/Form/Type/FileUploadType.php b/Form/Type/FileUploadType.php
index 6539fde11d70ce09e9d7ff8fa91c9410568e3e97..da58c68a9eca8236ab05b2d48ef0c0a11a3af2a4 100644
--- a/Form/Type/FileUploadType.php
+++ b/Form/Type/FileUploadType.php
@@ -17,8 +17,11 @@ use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormView;
+use Symfony\Component\OptionsResolver\OptionsResolver;
 use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 use Symfony\Component\Routing\Router;
+use Symfony\Component\Validator\Constraints\Count;
+use Symfony\Component\Validator\Constraints\NotNull;
 
 class FileUploadType extends AbstractType
 {
@@ -87,6 +90,38 @@ class FileUploadType extends AbstractType
 
         $resolver->setDefaults(['max_chunk_size' => $this->maxChunkSize ?: 0]);
         $resolver->setAllowedTypes(['max_chunk_size' => 'int']);
+
+        $resolver->setNormalizers(['constraints' => function(OptionsResolver $options, $constraints) {
+            return $this->addConstraints($options, $constraints);
+        }]);
+    }
+
+    protected function addConstraints(OptionsResolver $options, $constraints)
+    {
+        if($options['multiple']) {
+            $range = [];
+            if($options['required']) {
+                $range['min'] = 1;
+                $range['minMessage'] = 'file_upload.required';
+            }
+            if($options['max_number_of_files']) {
+                $range['max'] = $options['max_number_of_files'];
+                $range['maxMessage'] = 'file_upload.max_number_of_files';
+            }
+            if(!empty($range)) {
+                $constraints[] = new Count($range);
+            }
+
+        } elseif($options['required']) {
+            $required = new \Symfony\Component\Validator\Constraints\NotBlank(['message' => 'file_upload.required']);
+            $constraints[] = $required;
+        }
+
+        if($options['min_file_size'] || $options['max_file_size'] || $options['accept_file_types']) {
+            // @TODO gère les tailles
+        }
+
+        return $constraints;
     }
 
     protected function getWidgetDefaults()