From a439681bd490104802312c7c4bd6fa5309a3e37a Mon Sep 17 00:00:00 2001 From: Roland Franssen Date: Mon, 12 Nov 2018 10:24:01 +0100 Subject: [PATCH] [HttpKernel] Fix collecting uploaded files --- .../views/Collector/request.html.twig | 2 +- .../DataCollector/RequestDataCollector.php | 22 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig index 8e496fe8a458e..f6648b5b38fe1 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig @@ -143,7 +143,7 @@ File Name MIME Type - Size (bytes) + Size (bytes) diff --git a/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php index e1ce38377e431..5afaf39299942 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php @@ -13,6 +13,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Cookie; +use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -58,15 +59,20 @@ public function collect(Request $request, Response $response, \Exception $except } $requestFiles = array(); - foreach ($request->files->all() as $files) { - foreach ($files as $fileName => $fileData) { - $requestFiles[] = array( - 'name' => $fileData->getClientOriginalName(), - 'mimetype' => $fileData->getMimeType(), - 'size' => $fileData->getSize(), - ); + $extractFiles = function (array $files) use (&$extractFiles, &$requestFiles) { + foreach ($files as $file) { + if ($file instanceof UploadedFile) { + $requestFiles[] = array( + 'name' => $file->getClientOriginalName(), + 'mimetype' => $file->getMimeType(), + 'size' => $file->getSize(), + ); + } elseif (\is_array($file)) { + $extractFiles($file); + } } - } + }; + $extractFiles($request->files->all()); $sessionMetadata = array(); $sessionAttributes = array();