yii\web\MultipartFormDataParser::addFile PHP Method

addFile() private method

Adds file info to the uploaded files array by input name, e.g. Item[file].
private addFile ( array &$files, string $name, array $info )
$files array array containing uploaded files
$name string input name specification.
$info array file info.
    private function addFile(&$files, $name, $info)
    {
        if (strpos($name, '[') === false) {
            $files[$name] = $info;
            return;
        }
        $fileInfoAttributes = ['name', 'type', 'size', 'error', 'tmp_name', 'tmp_resource'];
        $nameParts = preg_split('/\\]\\[|\\[/s', $name);
        $baseName = array_shift($nameParts);
        if (!isset($files[$baseName])) {
            $files[$baseName] = [];
            foreach ($fileInfoAttributes as $attribute) {
                $files[$baseName][$attribute] = [];
            }
        } else {
            foreach ($fileInfoAttributes as $attribute) {
                $files[$baseName][$attribute] = (array) $files[$baseName][$attribute];
            }
        }
        foreach ($fileInfoAttributes as $attribute) {
            if (!isset($info[$attribute])) {
                continue;
            }
            $current =& $files[$baseName][$attribute];
            foreach ($nameParts as $namePart) {
                $namePart = trim($namePart, ']');
                if ($namePart === '') {
                    $current[] = [];
                    $lastKey = array_pop(array_keys($current));
                    $current =& $current[$lastKey];
                } else {
                    if (!isset($current[$namePart])) {
                        $current[$namePart] = [];
                    }
                    $current =& $current[$namePart];
                }
            }
            $current = $info[$attribute];
        }
    }