public function verifyAndMoveUploadedFile(
        $originSize,
        $tmpDestination,
        $publicDestination
    ) {
        $remoteTempSize = $this->getSize($tmpDestination);
        $this->logger->debug('Temp size: ' . $remoteTempSize);
        $this->logger->debug('Origin size: ' . $originSize);
        if ($remoteTempSize <= 0) {
            throw new VerifySizeException('Uploaded file has size ' . $remoteTempSize);
        }

        if ($remoteTempSize !== $originSize) {
            throw new VerifySizeException(
                sprintf(
                    'Uploaded file has wrong size. Expected %s, got %s.',
                    $originSize,
                    $remoteTempSize
                )
            );
        }

        $this->logger->info('OK: Uploaded temp file has right size.');
        if (!$this->move($tmpDestination, $publicDestination)) {
            throw new FtpException('Error renaming uploaded file from temp to public.');
        }

        $remotePublicSize = $this->getSize($publicDestination);
        $this->logger->debug('Renamed size: ' . $remotePublicSize);
        if ($remotePublicSize <= 0) {
            throw new VerifySizeException('Renamed file has size ' . $remotePublicSize);
        }

        if ($remotePublicSize !== $originSize) {
            throw new VerifySizeException(
                sprintf(
                    'Renamed file has wrong size. Expected %s, got %s.',
                    $originSize,
                    $remotePublicSize
                )
            );
        }
        $this->logger->info('OK: Renamed file has right size.');

        return true;
    }