/** * Sync a file. * * @param File $resource * @param DiskInterface $disk * @return null|FileInterface */ public function sync(File $resource, DiskInterface $disk) { $folder = $this->syncFolder($resource, $disk); if (!($file = $this->files->findByName(basename($resource->getPath()), $disk, $folder))) { $file = $this->files->create(['name' => basename($resource->getPath()), 'folder_id' => $folder ? $folder->getId() : null, 'disk_id' => $disk->getId(), 'size' => $resource->getSize(), 'mime_type' => $resource->getMimetype(), 'extension' => pathinfo($resource->getPath(), PATHINFO_EXTENSION)]); } return $file; }
/** * Locate a file by disk and path. * * @param $disk * @param $path * @return FileInterface|null */ public function locate($disk, $path) { if (!($disk = $this->disks->findBySlug($disk))) { return null; } $folder = dirname($path) !== '.' ? $this->folders->findByPath(dirname($path), $disk) : null; if (!($file = $this->files->findByName(basename($path), $disk, $folder))) { return null; } return $file; }
/** * Return the details of a file or folder. * * @param $disk * @param $path * @return string */ public function view($disk, $path) { $disk = $this->disks->findBySlug($disk); $folder = $this->folders->findByPath(dirname($path), $disk); $file = $this->files->findByName(basename($path), $disk, $folder); if (!$disk || !$folder && !$file) { abort(404); } if ($file) { return json_encode($file); } if ($folder) { return json_encode($folder); } }