use Joomla\Filesystem\File; $file = $this->input->files->get('file'); $config = array( 'extensions' => 'jpg,jpeg,gif,png,pdf,doc,docx', 'max_size' => 30000000, // 30 MB 'folder' => 'documents' ); // Check there is some file to upload if (empty($file['name'])) { return; } // Check max size if ($file['size'] > $config['max_size']) { throw new \RuntimeException('Uploaded file size (' . round($file['size'] / 1000) . ' kB) is greater than allowed size (' . round($config['max_size'] / 1000) . ' kB).'); } $config['extensions'] = explode(',', $config['extensions']); // Get File extension $ext = strtolower(substr($file['name'], (strrpos($file['name'], '.') + 1))); // Sanitize allowed extensions foreach ($config['extensions'] as &$extension) { $extension = str_replace('.', '', trim(strtolower($extension))); } // Check allowed extensions if (!in_array($ext, $config['extensions'])) { throw new \RuntimeException('Uploaded file extension (' . $ext . ') is not within allowed extensions (' . implode(',', $config['extensions']) . ')'); } $path = JPATH_ROOT . '/' . $config['folder'] . '/' . File::makeSafe($file['name']); File::upload($file['tmp_name'], $path);In 1.x, the second parameter of the add and addFile methods was optional. In 2.0, this parameter is required. This parameter requires the root path of the source which you are patching.
Add "joomla/filesystem": "~3.0" to the require block in your composer.json and then run composer install.
{ "require": { "joomla/filesystem": "~3.0" } }Alternatively, you can simply run the following from the command line:
composer require joomla/filesystem "~3.0"If you want to include the test sources, use
composer require --prefer-source joomla/filesystem "~3.0"