/** * Move the file to a new location on disk. * * Will invoke the `save()` method on the model after the associated file has been moved to prevent synchronization errors * @param \Plank\Mediable\Media $media * @param string $directory directory relative to disk root * @param string $name filename. Do not include extension * @return void * @throws \Plank\Mediable\Exceptions\MediaMoveException If attempting to change the file extension or a file with the same name already exists at the destination */ public function move(Media $media, $directory, $filename = null) { $storage = $this->filesystem->disk($media->disk); if ($filename) { $filename = $this->removeExtensionFromFilename($filename, $media->extension); } else { $filename = $media->filename; } $directory = trim($directory, '/'); $target_path = $directory . '/' . $filename . '.' . $media->extension; if ($storage->has($target_path)) { throw MediaMoveException::destinationExists($target_path); } $storage->move($media->getDiskPath(), $target_path); $media->filename = $filename; $media->directory = $directory; $media->save(); }
protected function seedFileForMedia(Media $media, $contents = '') { app('filesystem')->disk($media->disk)->put($media->getDiskPath(), $contents); }
/** * Decide what to do about duplicated files. * @param \Plank\Mediable\Media $model * @return void * @throws \Plank\Mediable\Exceptions\MediaUpload\FileExistsException If directory is not writable or file already exists at the destination and on_duplicate is set to 'error' */ private function handleDuplicate(Media $model) { switch ($this->config['on_duplicate']) { case static::ON_DUPLICATE_ERROR: throw FileExistsException::fileExists($model->getDiskPath()); break; case static::ON_DUPLICATE_REPLACE: $this->deleteExistingMedia($model); break; case static::ON_DUPLICATE_INCREMENT: default: $model->filename = $this->generateUniqueFilename($model); } }