Ejemplo n.º 1
0
 /**
  * @param Request $request
  * @return \FastD\Http\JsonResponse
  * @throws \Exception
  */
 public function uploadAction(Request $request)
 {
     if ($request->files->isEmpty()) {
         return $this->responseJson(['msg' => 'Empty files.'], Response::HTTP_BAD_REQUEST);
     }
     $uploadedFiles = $request->getUploader(['path' => $this->getParameters('media.uploaded.path'), 'exts' => $this->getParameters('media.uploaded.exts'), 'size' => $this->getParameters('media.uploaded.size')])->uploading();
     if (null == ($files = $uploadedFiles->getUploadFiles())) {
         return $this->responseJson(['msg' => 'Uploaded files error.']);
     }
     try {
         $remote = $this->getParameters('media.remote.url');
     } catch (\Exception $e) {
         $remote = null;
     }
     try {
         $repository = $this->getParameters('media.provider.repository');
         $connection = $this->getParameters('media.provider.connection');
         $mediaRepository = $this->getConnection($connection)->getRepository($repository);
     } catch (\Exception $e) {
         $mediaRepository = null;
     }
     foreach ($files as $file) {
         $relativePath = str_replace(dirname($this->get('kernel')->getRootPath()) . DIRECTORY_SEPARATOR . 'public/', '', $file->getRealPath());
         $thumb = $this->toThumbnail($relativePath, $this->getParameters('media.thumbnil.width'), $this->getParameters('media.thumbnil.height'));
         $id = $this->createNewImageRecord($mediaRepository, $file);
         $remoteUrl = $this->uploadRemote($request, $file, $remote);
     }
     return $this->responseJson(['id' => $id, 'url' => $this->asset($relativePath, $this->getParameters('media.resources_url')), 'thumb' => $this->asset($thumb, $this->getParameters('media.resources_url')), 'remote_url' => $remoteUrl]);
 }