How to prevent error: Use of $_FILES is discouraged in Magento 2?

How to prevent the use of global variable $_FILES in code?

Magento application does not directly use any PHP superglobals variable like $GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST.

You don’t need to directly use $_FILES in your code for file/images save. This may be lead to security vulnerabilities.

When you are using tools like GrumPHP, At your code commit time, You facing error like Use of $_FILES is discouraged in Magento 2.

Prevent of this error, You have to use an alternative way of $_FILES using Magento 2 with Magento\Framework\HTTP\PhpEnvironment\Request class.

You need to add Request.php class into the constructor as a dependency injection.

<?php
use Magento\Framework\HTTP\PhpEnvironment\Request;

class FilesAlternative
{
    /**
     * @var Request
     */
    protected $request;

    /**
     * Validate constructor.
     *
     * @param Request $request
     */
    public function __construct(
        Request $request
    ) {
        $this->request = $request;
    }

    public function saveImage() {
        $files = $this->request->getFiles()->toArray(); // same as $_FIELS
        if (isset($files['import_file']['name'])) {
        	//do your logic for save file
        }
    }

In above function, $this->request->getFiles()->toArray() gives output same as $_FILES.