src/Http/ServerRequest.php
private static function getUploadedFileLeaves(array $uploaded_files)
    {
        $new_file = [];

        if (isset($uploaded_files['tmp_name']) && !is_array($uploaded_files['tmp_name'])) {
            $new_file = new UploadedFile(
                $uploaded_files['name'] ?? null,
                $uploaded_files['type'] ?? null,
                $uploaded_files['tmp_name'] ?? null,
                $uploaded_files['error'] ?? null,
                $uploaded_files['size'] ?? null,
                true
            );
        } elseif (isset($uploaded_files['tmp_name'][0])) {
            foreach ($uploaded_files['tmp_name'] as $key => $value) {
                $new_file[$key] = new UploadedFile(
                    $uploaded_files['name'][$key] ?? null,
                    $uploaded_files['name'][$key] ?? null,
                    $uploaded_files['tmp_name'][$key] ?? null,
                    $uploaded_files['error'][$key] ?? null,
                    $uploaded_files['size'][$key] ?? null,
                    true
                );
            }
        } else {
            foreach (array_keys($uploaded_files['tmp_name']) as $index) {
                $new_array = array_combine(
                    array_keys($uploaded_files),
                    array_column($uploaded_files, $index)
                );

                $new_file[$index] = static::getUploadedFileLeaves($new_array);
            }
        }

        return $new_file;
    }
private static function getUploadedFileLeaves(array $uploaded_files)
    {
        $new_file = [];

        if (isset($uploaded_files['tmp_name']) && !is_array($uploaded_files['tmp_name'])) {
            $new_file = new UploadedFile(
                $uploaded_files['name'] ?? null,
                $uploaded_files['type'] ?? null,
                $uploaded_files['tmp_name'] ?? null,
                $uploaded_files['error'] ?? null,
                $uploaded_files['size'] ?? null,
                true
            );
        } elseif (isset($uploaded_files['tmp_name'][0])) {
            foreach ($uploaded_files['tmp_name'] as $key => $value) {
                $new_file[$key] = new UploadedFile(
                    $uploaded_files['name'][$key] ?? null,
                    $uploaded_files['name'][$key] ?? null,
                    $uploaded_files['tmp_name'][$key] ?? null,
                    $uploaded_files['error'][$key] ?? null,
                    $uploaded_files['size'][$key] ?? null,
                    true
                );
            }
        } else {
            foreach (array_keys($uploaded_files['tmp_name']) as $index) {
                $new_array = array_combine(
                    array_keys($uploaded_files),
                    array_column($uploaded_files, $index)
                );

                $new_file[$index] = static::getUploadedFileLeaves($new_array);
            }
        }

        return $new_file;
    }
Parse uploaded file.

@param array $uploaded_files The non-normalized tree of uploaded file data.
@return UploadedFile[]|UploadedFile An array of UploadedFile instances or a single instance of UploadedFile.