浏览代码

[HttpFoundation] Fixed class Request to convert empty files to NULL

Bernhard Schussek 14 年之前
父节点
当前提交
d95d33666d

+ 7 - 5
src/Symfony/Component/HttpFoundation/Request.php

@@ -919,10 +919,12 @@ class Request
                 $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 @@ class Request
     {
         if (!is_array($data)) {
             return $data;
-        }    
-        
+        }
+
         $fileKeys = array('error', 'name', 'size', 'tmp_name', 'type');
         $keys = array_keys($data);
         sort($keys);

+ 13 - 1
tests/Symfony/Tests/Component/HttpFoundation/RequestTest.php

@@ -155,7 +155,6 @@ class RequestTest extends \PHPUnit_Framework_TestCase
 
     }
 
-
     public function testInitializeConvertsUploadedFiles()
     {
         $tmpFile = $this->createTempFile();
@@ -172,6 +171,19 @@ class RequestTest extends \PHPUnit_Framework_TestCase
         $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();