mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 06:37:55 +08:00 
			
		
		
		
	This commit is contained in:
		
				
					committed by
					
						
						Alexander Makarov
					
				
			
			
				
	
			
			
			
						parent
						
							b5be47321b
						
					
				
				
					commit
					3221ab0769
				
			@ -4,6 +4,7 @@ Yii Framework 2 Change Log
 | 
			
		||||
2.0.16 under development
 | 
			
		||||
------------------------
 | 
			
		||||
 | 
			
		||||
- Bug #15683: Fixed file as array uploading in MultipartFormDataParser (Groonya)
 | 
			
		||||
- Bug #16822: Create config dir recursively in message/config (Groonya)
 | 
			
		||||
- Bug #16580: Delete unused php message files in MessageController if `$removeUnused` option is on (Groonya)
 | 
			
		||||
- Bug #16022: Fix UniqueValidator for PostgreSQL. Checks the uniqueness of keys in `jsonb` field (lav45)
 | 
			
		||||
 | 
			
		||||
@ -320,7 +320,8 @@ class MultipartFormDataParser extends BaseObject implements RequestParserInterfa
 | 
			
		||||
                $namePart = trim($namePart, ']');
 | 
			
		||||
                if ($namePart === '') {
 | 
			
		||||
                    $current[] = [];
 | 
			
		||||
                    $lastKey = array_pop(array_keys($current));
 | 
			
		||||
                    $keys = array_keys($current);
 | 
			
		||||
                    $lastKey = array_pop($keys);
 | 
			
		||||
                    $current = &$current[$lastKey];
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (!isset($current[$namePart])) {
 | 
			
		||||
 | 
			
		||||
@ -129,6 +129,23 @@ class MultipartFormDataParserTest extends TestCase
 | 
			
		||||
        $this->assertEquals(UPLOAD_ERR_INI_SIZE, $_FILES['thirdFile']['error']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testUploadFileAsArray(){
 | 
			
		||||
        $parser = new MultipartFormDataParser();
 | 
			
		||||
 | 
			
		||||
        $boundary = '---------------------------22472926011618';
 | 
			
		||||
        $contentType = 'multipart/form-data; boundary=' . $boundary;
 | 
			
		||||
        $rawBody = "--{$boundary}\nContent-Disposition: form-data; name=\"someFile[]\"; filename=\"some-file.txt\"\nContent-Type: text/plain\r\n\r\nsome file content";
 | 
			
		||||
        $rawBody .= "--{$boundary}--";
 | 
			
		||||
 | 
			
		||||
        $parser->parse($rawBody, $contentType);
 | 
			
		||||
 | 
			
		||||
        $this->assertNotEmpty($_FILES['someFile']);
 | 
			
		||||
        $this->assertEquals(UPLOAD_ERR_OK, $_FILES['someFile']['error'][0]);
 | 
			
		||||
        $this->assertEquals('some-file.txt', $_FILES['someFile']['name'][0]);
 | 
			
		||||
        $this->assertEquals('text/plain', $_FILES['someFile']['type'][0]);
 | 
			
		||||
        $this->assertStringEqualsFile($_FILES['someFile']['tmp_name'][0], 'some file content');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @depends testNotEmptyPost
 | 
			
		||||
     * @depends testNotEmptyFiles
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user