diff --git a/Listener/UploadedFileListener.php b/Listener/UploadedFileListener.php
index db50e2ddb3f67ca7a1bb21e0d276f6a590cd2555..cb37ea6d8f4fcf0402a12472a4006120bdd1c42b 100644
--- a/Listener/UploadedFileListener.php
+++ b/Listener/UploadedFileListener.php
@@ -23,6 +23,11 @@ class UploadedFileListener
      */
     private $filesystem;
 
+    /**
+     * @var array
+     */
+    private $scheduledDeletion = [];
+
     /**
      *
      * @param Filesystem $filesystem
@@ -58,7 +63,17 @@ class UploadedFileListener
         $this->filesystem->rename($changes['path'][0], $changes['path'][1]);
     }
 
-    /** Supprime le fichier disque lorsque l'on supprime l'entité.
+    /** Enregistre le chemin du fichier à supprimer.
+     *
+     * @param UploadedFileInterface $file
+     * @param LifecycleEventArgs $event
+     */
+    public function preRemove(UploadedFileInterface $file, LifecycleEventArgs $event)
+    {
+        $this->scheduledDeletion[$file->getId()] = $file->getPath();
+    }
+
+    /** Supprime le fichier correspondant à l'UploadedFileInterface supprimé.
      *
      * @param UploadedFileInterface $file
      * @param LifecycleEventArgs $event
@@ -66,9 +81,17 @@ class UploadedFileListener
     public function postRemove(UploadedFileInterface $file, LifecycleEventArgs $event)
     {
         try {
-            $this->filesystem->delete($file->getPath());
+            $this->filesystem->delete($this->scheduledDeletion[$file->getId()]);
         } catch(FileNotFound $ex) {
             // NOOP
         }
     }
+
+    /**
+     * Nettoie la liste des fichiers à supprimer.
+     */
+    public function postFlush()
+    {
+        $this->scheduledDeletion = [];
+    }
 }