diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php
index 4f538704471822d39cc2547cd7bf911222bb8ce0..fd55f6d599d297b5bc237e795e509bb7f3418b9b 100644
--- a/Entity/Repository/UploadedFileRepository.php
+++ b/Entity/Repository/UploadedFileRepository.php
@@ -11,6 +11,7 @@ use Doctrine\ORM\EntityRepository;
 use Gaufrette\Filesystem;
 use Irstea\FileUploadBundle\Entity\UploadedFile;
 use Irstea\FileUploadBundle\Event\FileUploadCompleteEvent;
+use Irstea\FileUploadBundle\Exception\RejectedFileException;
 use Irstea\FileUploadBundle\FileUploadEvents;
 use Irstea\FileUploadBundle\Model\FileManagerInterface;
 use Irstea\FileUploadBundle\Model\UploadedFileInterface;
@@ -105,12 +106,22 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte
             ->setMimeType($fs->mimeType($path))
             ->setEtat(UploadedFileInterface::ETAT_ORPHELIN);
 
-        $this->eventDispatcher->dispatch(FileUploadEvents::UPLOAD_COMPLETE, new FileUploadCompleteEvent($file));
-
         $this->_em->persist($file);
-        $this->_em->flush();
 
-        $this->log(LogLevel::INFO, 'File completed', ['file' => $file]);
+        try {
+            $this->eventDispatcher->dispatch(FileUploadEvents::UPLOAD_COMPLETE, new FileUploadCompleteEvent($file));
+
+            $this->_em->flush();
+            $this->log(LogLevel::INFO, 'File completed', ['file' => $file]);
+
+        } catch(RejectedFileException $ex) {
+            $file->setEtat(UploadedFileInterface::ETAT_REJETE);
+
+            $this->_em->flush();
+            $this->log(LogLevel::WARNING, 'File rejected', ['file' => $file, 'exception' => $ex]);
+
+            throw $ex;
+        }
     }
 
     /**