diff --git a/Controller/UploadController.php b/Controller/UploadController.php
index 564964ccd5666c8c5be27f08f6bd3a533710ae23..a41a090c5840f417f7c888223bd74f3f55ebc711 100644
--- a/Controller/UploadController.php
+++ b/Controller/UploadController.php
@@ -123,7 +123,19 @@ class UploadController extends Controller
             $stream = $file->open('wb');
         }
 
-        $stream->write($request->getContent());
+        // Demande un filehandle plutôt que charger le contenu en mémoire
+        $input = $request->getContent(true);
+
+        if(false !== $fileHandler = $stream->cast(STREAM_CAST_AS_STREAM)) {
+            // Utilise stream_copy_to_stream si le Gaufrette\Stream peut nous retourner un filehandle
+            stream_copy_to_stream($input, $fileHandler);
+        } else {
+            // Sinon fait une copie par blocs (moins performant)
+            while(!feof($input)) {
+                $stream->write(fread($input, 8192));
+            }
+        }
+        fclose($input);
         $stream->close();
 
         if(!$final) {