Browse Source

Fix post data that interleaves with FILES not being handled.

Refs #3997
mark_story 11 years ago
parent
commit
8a2805f7ce
2 changed files with 13 additions and 2 deletions
  1. 2 1
      src/Network/Request.php
  2. 11 1
      tests/TestCase/Network/RequestTest.php

+ 2 - 1
src/Network/Request.php

@@ -405,7 +405,8 @@ class Request implements \ArrayAccess {
 				if (isset($data['tmp_name']) && is_string($data['tmp_name'])) {
 					$post[$key] = $data;
 				} else {
-					$post[$key] = $this->_processFileData([], $data);
+					$keyData = isset($post[$key]) ? $post[$key] : [];
+					$post[$key] = $this->_processFileData($keyData, $data);
 				}
 			}
 		}

+ 11 - 1
tests/TestCase/Network/RequestTest.php

@@ -297,7 +297,15 @@ class RequestTest extends TestCase {
 				],
 			]
 		];
-		$request = new Request(compact('files'));
+		$post = [
+			'pictures' => [
+				0 => ['name' => 'A cat']
+			],
+			0 => [
+				'name' => 'A dog'
+			]
+		];
+		$request = new Request(compact('files', 'post'));
 		$expected = [
 			'image_main' => [
 				'file' => [
@@ -310,6 +318,7 @@ class RequestTest extends TestCase {
 			],
 			'pictures' => [
 				0 => [
+					'name' => 'A cat',
 					'file' => [
 						'name' => 'a-file.png',
 						'type' => 'image/png',
@@ -320,6 +329,7 @@ class RequestTest extends TestCase {
 				]
 			],
 			0 => [
+				'name' => 'A dog',
 				'image' => [
 					'name' => 'scratch.text',
 					'type' => 'text/plain',