function FileSystem::getDestinationFilename

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/File/FileSystem.php \Drupal\Core\File\FileSystem::getDestinationFilename()
  2. 8.9.x core/lib/Drupal/Core/File/FileSystem.php \Drupal\Core\File\FileSystem::getDestinationFilename()
  3. 11.x core/lib/Drupal/Core/File/FileSystem.php \Drupal\Core\File\FileSystem::getDestinationFilename()

Determines the destination path for a file.

Parameters

string $destination: The desired final URI or filepath.

\Drupal\Core\File\FileExists|int $fileExists: Replace behavior when the destination file already exists.

Return value

string|bool The destination filepath, or FALSE if the file already exists and FileExists::Error is specified.

Overrides FileSystemInterface::getDestinationFilename

1 call to FileSystem::getDestinationFilename()
FileSystem::prepareDestination in core/lib/Drupal/Core/File/FileSystem.php
Prepares the destination for a file copy or move operation.

File

core/lib/Drupal/Core/File/FileSystem.php, line 532

Class

FileSystem
Provides helpers to operate on files and stream wrappers.

Namespace

Drupal\Core\File

Code

public function getDestinationFilename($destination, $fileExists) {
  if (!$fileExists instanceof FileExists) {
    // @phpstan-ignore-next-line
    $fileExists = FileExists::fromLegacyInt($fileExists, __METHOD__);
  }
  $basename = $this->basename($destination);
  if (!Unicode::validateUtf8($basename)) {
    throw new FileException(sprintf("Invalid filename '%s'", $basename));
  }
  if (file_exists($destination)) {
    switch ($fileExists) {
      case FileExists::Replace:
        // Do nothing here, we want to overwrite the existing file.
        break;

      case FileExists::Rename:
        $directory = $this->dirname($destination);
        $destination = $this->createFilename($basename, $directory);
        break;

      case FileExists::Error:
        // Error reporting handled by calling function.
        return FALSE;
    }
  }
  return $destination;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.