From 81bd0b1a4b0ed3778f518f28be4ef72b2f6f297c Mon Sep 17 00:00:00 2001 From: Benjamin Jonard Date: Wed, 17 Jan 2018 23:43:05 +0100 Subject: [PATCH 1/2] Attempt to fix error when submitting empty file input --- Bridges/HttpKernel.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Bridges/HttpKernel.php b/Bridges/HttpKernel.php index 693aa04..8b31d3c 100644 --- a/Bridges/HttpKernel.php +++ b/Bridges/HttpKernel.php @@ -159,15 +159,21 @@ protected function mapRequest(ServerRequestInterface $psrRequest) $tmpname = tempnam(sys_get_temp_dir(), 'upload'); $this->tempFiles[] = $tmpname; - file_put_contents($tmpname, (string)$value->getStream()); - $value = new \Symfony\Component\HttpFoundation\File\UploadedFile( - $tmpname, - $value->getClientFilename(), - $value->getClientMediaType(), - $value->getSize(), - $value->getError(), - true - ); + if (UPLOAD_ERR_NO_FILE == $value->getError()) { + $value = null; + } else { + if (UPLOAD_ERR_OK == $value->getError()) { + file_put_contents($tmpname, (string)$value->getStream()); + } + $value = new \Symfony\Component\HttpFoundation\File\UploadedFile( + $tmpname, + $value->getClientFilename(), + $value->getClientMediaType(), + $value->getSize(), + $value->getError(), + true + ); + } } } }; From f25848a6ceb0e582ab6f7f272ba4a2ce6819d9a4 Mon Sep 17 00:00:00 2001 From: Benjamin Jonard Date: Thu, 18 Jan 2018 11:55:51 +0100 Subject: [PATCH 2/2] Fix changes requested --- Bridges/HttpKernel.php | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Bridges/HttpKernel.php b/Bridges/HttpKernel.php index 8b31d3c..5fcc395 100644 --- a/Bridges/HttpKernel.php +++ b/Bridges/HttpKernel.php @@ -9,13 +9,16 @@ use PHPPM\Utils; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\UploadedFileInterface; use RingCentral\Psr7; use Symfony\Component\HttpFoundation\Cookie; +use Symfony\Component\HttpFoundation\File\UploadedFile as SymfonyFile; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpFoundation\StreamedResponse as SymfonyStreamedResponse; use Symfony\Component\HttpKernel\TerminableInterface; + class HttpKernel implements BridgeInterface { /** @@ -152,25 +155,25 @@ protected function mapRequest(ServerRequestInterface $psrRequest) $uploadedFiles = $psrRequest->getUploadedFiles(); $mapFiles = function(&$files) use (&$mapFiles) { - foreach ($files as &$value) { - if (is_array($value)) { - $mapFiles($value); - } else if ($value instanceof \React\Http\Io\UploadedFile) { + foreach ($files as &$file) { + if (is_array($file)) { + $mapFiles($file); + } else if ($file instanceof UploadedFileInterface) { $tmpname = tempnam(sys_get_temp_dir(), 'upload'); $this->tempFiles[] = $tmpname; - if (UPLOAD_ERR_NO_FILE == $value->getError()) { - $value = null; + if (UPLOAD_ERR_NO_FILE == $file->getError()) { + $file = null; } else { - if (UPLOAD_ERR_OK == $value->getError()) { - file_put_contents($tmpname, (string)$value->getStream()); + if (UPLOAD_ERR_OK == $file->getError()) { + file_put_contents($tmpname, (string)$file->getStream()); } - $value = new \Symfony\Component\HttpFoundation\File\UploadedFile( + $file = new SymfonyFile( $tmpname, - $value->getClientFilename(), - $value->getClientMediaType(), - $value->getSize(), - $value->getError(), + $file->getClientFilename(), + $file->getClientMediaType(), + $file->getSize(), + $file->getError(), true ); }