From ab94b39d4c5147ca6d887b3251098ab2edf6c09b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr>
Date: Thu, 22 Jan 2015 16:31:11 +0100
Subject: [PATCH] =?UTF-8?q?Utilise=20si=20possible=20stream=5Fcopy=5Fto=5F?=
 =?UTF-8?q?stream=20pour=20enregistrer=20les=20fichiers=20=C3=A0=20l'uploa?=
 =?UTF-8?q?d.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Controller/UploadController.php | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/Controller/UploadController.php b/Controller/UploadController.php
index 564964cc..a41a090c 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) {
-- 
GitLab