diff --git a/Entity/UploadedFile.php b/Entity/UploadedFile.php
index e4926bcc46e37fd6a0983661a6fca24d3d4d6aa8..e59246b74c07a78e5698f2fac0b4d0e6d38f599a 100644
--- a/Entity/UploadedFile.php
+++ b/Entity/UploadedFile.php
@@ -91,6 +91,12 @@ class UploadedFile implements UploadedFileInterface
      */
     private $filesystem;
 
+    /** Contient le nom de chemin local.
+     *
+     * @var string
+     */
+    private $localTempPath = null;
+
     /**
      *
      */
@@ -581,4 +587,34 @@ class UploadedFile implements UploadedFileInterface
             'icon'        => MimeTypeIcon::getMimeTypeIcon($this->getMimeType())
         ];
     }
+    private $localTempPath = null;
+
+    public function getLocalPath()
+    {
+        if(null !== $this->localTempPath) {
+            return $this->localTempPath;
+        }
+
+        $stream = $this->filesystem->createStream($this->getPath());
+        $stream->open(new StreamMode('rb'));
+        $handle = $stream->cast(STREAM_CAST_AS_STREAM);
+
+        if(false !== $handle) {
+            if(stream_is_local($handle)) {
+                $this->localTempPath = stream_get_meta_data($handle)['uri'];
+                fclose($handle);
+                return $this->localTempPath;
+            }
+            fclose($handle);
+        }
+
+        $this->localTempPath = tempnam(sys_get_temp_dir(), 'UploadedFile');
+        register_shutdown_function('unlink', $this->localTempPath);
+
+        $tmp = fopen($this->localTempPath, 'xb');
+        $this->copyTo($tmp);
+        fclose($tmp);
+
+        return $this->localTempPath;
+    }
 }
diff --git a/Model/UploadedFileInterface.php b/Model/UploadedFileInterface.php
index 567eb6dbf6eebf0252e402409888ca5f1f621b64..7b46d603995fdab527b4b01f073685b53a2412ca 100644
--- a/Model/UploadedFileInterface.php
+++ b/Model/UploadedFileInterface.php
@@ -217,6 +217,13 @@ interface UploadedFileInterface
      */
     public function copyTo($dest, $maxlen = PHP_INT_MAX, $readOffset = 0);
 
+    /** Retourne un nom de fichier local pour ce fichier.
+     *
+     * Ce peut-être un fichier temporaire qui sera supprimé à la fin de la requête !
+     *
+     * @return string
+     */
+    public function getLocalPath();
 
     /**
      * @return array