/**
  * Handle the command.
  *
  * @param DiskRepositoryInterface $disks
  * @param FileRepositoryInterface $files
  * @param FileFieldTypeParser     $parser
  * @param Request                 $request
  * @param MountManager            $manager
  *
  * @return null|bool|FileInterface
  */
 public function handle(DiskRepositoryInterface $disks, FileRepositoryInterface $files, FileFieldTypeParser $parser, Request $request, MountManager $manager)
 {
     $path = trim(array_get($this->fieldType->getConfig(), 'path'), './');
     $file = $request->file($this->fieldType->getInputName());
     $value = $request->get($this->fieldType->getInputName() . '_id');
     /**
      * Make sure we have at least
      * some kind of input.
      */
     if ($file === null) {
         if (!$value) {
             return null;
         }
         return $files->find($value);
     }
     // Make sure we have a valid upload disk. First by slug.
     if (!($disk = $disks->findBySlug($slug = array_get($this->fieldType->getConfig(), 'disk')))) {
         // If that fails look up by id.
         if (!($disk = $disks->find($id = array_get($this->fieldType->getConfig(), 'disk')))) {
             return null;
         }
     }
     // Make the path.
     $path = $parser->parse($path, $this->fieldType);
     $path = (!empty($path) ? $path . '/' : null) . $file->getClientOriginalName();
     return $manager->putStream($disk->path($path), fopen($file->getRealPath(), 'r+'));
 }
예제 #2
0
 /**
  * Handle the command.
  *
  * @param DiskRepositoryInterface $disks
  * @param FileRepositoryInterface $files
  * @param FileFieldTypeParser     $parser
  * @param Request                 $request
  * @param MountManager            $manager
  * @return null|bool|FileInterface
  */
 public function handle(DiskRepositoryInterface $disks, FileRepositoryInterface $files, FileFieldTypeParser $parser, Request $request, MountManager $manager)
 {
     $path = trim(array_get($this->fieldType->getConfig(), 'path'), './');
     $entry = $this->fieldType->getEntry();
     $file = $request->file($this->fieldType->getInputName());
     $value = $request->get($this->fieldType->getInputName() . '_id');
     /**
      * Make sure we have at least
      * some kind of input.
      */
     if ($file === null) {
         if (!$value) {
             return null;
         }
         return $files->find($value);
     }
     // Make sure we have a valid upload disk.
     if (!($disk = $disks->find($id = array_get($this->fieldType->getConfig(), 'disk')))) {
         throw new \Exception("The configured disk [{$id}] for [{$this->fieldType->getInputName()}] could not be found.");
     }
     // Make the path.
     $path = $parser->parse($path, $this->fieldType);
     $path = (!empty($path) ? $path . '/' : null) . $file->getClientOriginalName();
     return $manager->putStream($disk->path($path), fopen($file->getRealPath(), 'r+'));
 }
 /**
  * Handle the file upload.
  *
  * @param DiskRepositoryInterface $disks
  * @param ResponseFactory         $response
  * @param MountManager            $manager
  * @param Request                 $request
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function handle(DiskRepositoryInterface $disks, ResponseFactory $response, MountManager $manager, Request $request)
 {
     $path = trim($request->get('path'), '.');
     $file = $request->file('upload');
     $disk = $request->get('disk');
     if (is_numeric($disk)) {
         $disk = $disks->find($disk);
     } elseif (is_string($disk)) {
         $disk = $disks->findBySlug($disk);
     }
     $file = $manager->putStream($disk->path(ltrim(trim($path, '/') . '/' . $file->getClientOriginalName(), '/')), fopen($file->getRealPath(), 'r+'));
     /* @var FileInterface $file */
     return $response->json($file->getAttributes());
 }
 public function migrateFiles(DiskRepositoryInterface $disksRepo, MountManager $manager, $lowerLimit, $upperLimit)
 {
     $files = $this->getFilesToMigrate($this->baseUrl);
     if ($this->disk) {
         $migrated = [];
         $failed = [];
         foreach ($files as $index => $file) {
             if ($index >= $lowerLimit && $index < $upperLimit) {
                 try {
                     $manager->putStream($this->disk->slug . '://' . $file->path . '/' . $file->file, fopen($file->filename, 'r'));
                     $migrated[] = ['path' => $file->path . '/' . $file->file, 'filename' => $file->filename];
                 } catch (\ErrorException $ex) {
                     $failed[] = ['path' => $file->path . '/' . $file->file, 'filename' => $file->filename];
                 }
             }
             if ($index >= $upperLimit) {
                 break;
             }
         }
     }
     return json_encode(['status' => true, 'migrated' => $migrated, 'failed' => $failed, 'remaining' => count($files) - $upperLimit]);
 }