public function saveTo($targetPath)
    {
        if ($this->hasError()) {
            // We cannot process a file that has errored (empty, incomplete, blocked, ...)
            return false;
        }

        if ($this->getFileSize() <= 0) {
            // We cannot process empty source files
            return false;
        }

        if (!$this->didMove) {
            $moveOk = move_uploaded_file($this->getTemporaryPath(), $targetPath);
        } else {
            $moveOk = copy($this->getCurrentPath(), $targetPath);
        }

        if ($moveOk) {
            $this->didMove = true;
            $this->currentPath = $targetPath;
        }

        return $moveOk;
    }