diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index d54326c4b0de..e433059f59a0 100755 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -919,10 +919,12 @@ protected function convertFileInformation(array $files) $keys = array_keys($data); sort($keys); - if ($keys == $fileKeys) { - $fixedFiles[$key] = new UploadedFile($data['tmp_name'], $data['name'], $data['type'], $data['size'], $data['error']); - } else { + if ($keys != $fileKeys) { $fixedFiles[$key] = $this->convertFileInformation($data); + } else if ($data['error'] === UPLOAD_ERR_NO_FILE) { + $fixedFiles[$key] = null; + } else { + $fixedFiles[$key] = new UploadedFile($data['tmp_name'], $data['name'], $data['type'], $data['size'], $data['error']); } } } @@ -949,8 +951,8 @@ protected function fixPhpFilesArray($data) { if (!is_array($data)) { return $data; - } - + } + $fileKeys = array('error', 'name', 'size', 'tmp_name', 'type'); $keys = array_keys($data); sort($keys); diff --git a/tests/Symfony/Tests/Component/HttpFoundation/RequestTest.php b/tests/Symfony/Tests/Component/HttpFoundation/RequestTest.php index cf88b2f971c2..d3e580db7293 100644 --- a/tests/Symfony/Tests/Component/HttpFoundation/RequestTest.php +++ b/tests/Symfony/Tests/Component/HttpFoundation/RequestTest.php @@ -155,7 +155,6 @@ public function testGetHost() } - public function testInitializeConvertsUploadedFiles() { $tmpFile = $this->createTempFile(); @@ -172,6 +171,19 @@ public function testInitializeConvertsUploadedFiles() $this->assertEquals($file, $request->files->get('file')); } + public function testInitializeDoesNotConvertEmptyUploadedFiles() + { + $request = Request::create('', 'get', array(), array(), array('file' => array( + 'name' => '', + 'type' => '', + 'tmp_name' => '', + 'error' => UPLOAD_ERR_NO_FILE, + 'size' => 0 + ))); + + $this->assertEquals(null, $request->files->get('file')); + } + public function testInitializeConvertsUploadedFilesWithPhpBug() { $tmpFile = $this->createTempFile();