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) {