fixed multiple file upload errors

pull/664/head
KnifeLemon 3 weeks ago
parent 095a46663f
commit f0bd5dda81

@ -477,7 +477,7 @@ class Request
*/ */
public function getUploadedFiles(): array public function getUploadedFiles(): array
{ {
$files = []; $uploadedFiles = [];
$correctedFilesArray = $this->reArrayFiles($this->files); $correctedFilesArray = $this->reArrayFiles($this->files);
foreach ($correctedFilesArray as $keyName => $files) { foreach ($correctedFilesArray as $keyName => $files) {
foreach ($files as $file) { foreach ($files as $file) {
@ -489,14 +489,14 @@ class Request
$file['error'] $file['error']
); );
if (count($files) > 1) { if (count($files) > 1) {
$files[$keyName][] = $UploadedFile; $uploadedFiles[$keyName][] = $UploadedFile;
} else { } else {
$files[$keyName] = $UploadedFile; $uploadedFiles[$keyName] = $UploadedFile;
} }
} }
} }
return $files; return $uploadedFiles;
} }
/** /**

@ -330,31 +330,57 @@ class RequestTest extends TestCase
public function testGetMultiFileUpload(): void public function testGetMultiFileUpload(): void
{ {
$_FILES['files'] = [ // Arrange: Setup multiple file upload arrays
$_FILES['files_1'] = [
'name' => ['file1.txt', 'file2.txt'], 'name' => ['file1.txt', 'file2.txt'],
'type' => ['text/plain', 'text/plain'], 'type' => ['text/plain', 'text/plain'],
'size' => [123, 456], 'size' => [123, 456],
'tmp_name' => ['/tmp/php123', '/tmp/php456'], 'tmp_name' => ['/tmp/php123', '/tmp/php456'],
'error' => [0, 0] 'error' => [0, 0]
]; ];
$_FILES['files_2'] = [
'name' => ['file3.txt', 'file4.txt'],
'type' => ['text/html', 'application/json'],
'size' => [789, 321],
'tmp_name' => ['/tmp/php789', '/tmp/php321'],
'error' => [0, 0]
];
// Act
$request = new Request(); $request = new Request();
$uploadedFiles = $request->getUploadedFiles();
$files = $request->getUploadedFiles()['files']; // Assert: Verify first file group
$firstGroup = $uploadedFiles['files_1'] ?? [];
$this->assertCount(2, $firstGroup, 'First file group should contain 2 files');
$this->assertCount(2, $files); $this->assertUploadedFile($firstGroup[0], 'file1.txt', 'text/plain', 123, '/tmp/php123', 0);
$this->assertUploadedFile($firstGroup[1], 'file2.txt', 'text/plain', 456, '/tmp/php456', 0);
$this->assertEquals('file1.txt', $files[0]->getClientFilename()); // Assert: Verify second file group
$this->assertEquals('text/plain', $files[0]->getClientMediaType()); $secondGroup = $uploadedFiles['files_2'] ?? [];
$this->assertEquals(123, $files[0]->getSize()); $this->assertCount(2, $secondGroup, 'Second file group should contain 2 files');
$this->assertEquals('/tmp/php123', $files[0]->getTempName());
$this->assertEquals(0, $files[0]->getError()); $this->assertUploadedFile($secondGroup[0], 'file3.txt', 'text/html', 789, '/tmp/php789', 0);
$this->assertUploadedFile($secondGroup[1], 'file4.txt', 'application/json', 321, '/tmp/php321', 0);
}
$this->assertEquals('file2.txt', $files[1]->getClientFilename()); /**
$this->assertEquals('text/plain', $files[1]->getClientMediaType()); * Helper method to assert uploaded file properties
$this->assertEquals(456, $files[1]->getSize()); */
$this->assertEquals('/tmp/php456', $files[1]->getTempName()); private function assertUploadedFile(
$this->assertEquals(0, $files[1]->getError()); $file,
string $expectedName,
string $expectedType,
int $expectedSize,
string $expectedTmpName,
int $expectedError
): void {
$this->assertEquals($expectedName, $file->getClientFilename());
$this->assertEquals($expectedType, $file->getClientMediaType());
$this->assertEquals($expectedSize, $file->getSize());
$this->assertEquals($expectedTmpName, $file->getTempName());
$this->assertEquals($expectedError, $file->getError());
} }
public function testUrlWithAtSymbol(): void public function testUrlWithAtSymbol(): void

Loading…
Cancel
Save