diff --git a/src/Http/RequestFactory.php b/src/Http/RequestFactory.php index d6f60b8b..10507941 100644 --- a/src/Http/RequestFactory.php +++ b/src/Http/RequestFactory.php @@ -218,6 +218,7 @@ private function getFiles(): array 'name' => $v['name'][$k], 'type' => $v['type'][$k], 'size' => $v['size'][$k], + 'full_path' => $v['full_path'][$k] ?? null, 'tmp_name' => $v['tmp_name'][$k], 'error' => $v['error'][$k], '@' => &$v['@'][$k], diff --git a/tests/Http/Request.files.directory.phpt b/tests/Http/Request.files.directory.phpt new file mode 100644 index 00000000..366c105a --- /dev/null +++ b/tests/Http/Request.files.directory.phpt @@ -0,0 +1,37 @@ + [ + 'name' => ['a.jpg', 'c.jpg'], + 'type' => ['image/jpeg', 'image/jpeg'], + 'full_path' => ['a.jpg', 'b/c.jpg'], + 'tmp_name' => ['C:\\PHP\\temp\\php1D5D.tmp', 'C:\\PHP\\temp\\php1D5E.tmp'], + 'error' => [0, 0], + 'size' => [12345, 54321], + ], +]; + +$factory = new Http\RequestFactory; +$request = $factory->fromGlobals(); + +Assert::type('array', $request->files['files']); +Assert::count(2, $request->files['files']); +Assert::type(Nette\Http\FileUpload::class, $request->files['files'][0]); +Assert::type(Nette\Http\FileUpload::class, $request->files['files'][1]); + +Assert::same('a.jpg', $request->files['files'][0]->getUntrustedFullPath()); +Assert::same('b/c.jpg', $request->files['files'][1]->getUntrustedFullPath());