/**
  * Post a new media and return it's temporary identifier
  *
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function postAction(Request $request)
 {
     $file = $request->files->get('file');
     $violations = $this->validator->validate($file);
     if (count($violations) > 0) {
         $errors = [];
         foreach ($violations as $violation) {
             $errors[$violation->getPropertyPath()] = ['message' => $violation->getMessage(), 'invalid_value' => $violation->getInvalidValue()];
         }
         return new JsonResponse($errors, 400);
     }
     $pathData = $this->pathGenerator->generate($file);
     try {
         $movedFile = $file->move($this->uploadDir . DIRECTORY_SEPARATOR . $pathData['path'], $pathData['file_name']);
     } catch (FileException $e) {
         //TODO: a message goes here
         return new JsonResponse(null, 400);
     }
     return new JsonResponse(['originalFilename' => $file->getClientOriginalName(), 'filePath' => $movedFile->getPathname()]);
 }
 /**
  * Post a new media and return it's temporary identifier
  *
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function postAction(Request $request)
 {
     /** @var \Symfony\Component\HttpFoundation\File\UploadedFile $file */
     $file = $request->files->get('file');
     $violations = $this->validator->validate($file);
     if (count($violations) > 0) {
         $errors = [];
         foreach ($violations as $violation) {
             $errors[$violation->getPropertyPath()] = ['message' => $violation->getMessage(), 'invalid_value' => $violation->getInvalidValue()];
         }
         return new JsonResponse($errors, 400);
     }
     $pathData = $this->pathGenerator->generate($file);
     try {
         $movedFile = $file->move($this->uploadDir . DIRECTORY_SEPARATOR . $pathData['path'], $pathData['file_name']);
     } catch (FileException $e) {
         //TODO: more specific message if debug mode is on?
         return new JsonResponse("Unable to create target-directory, or moving file.", 400);
     }
     return new JsonResponse(['originalFilename' => $file->getClientOriginalName(), 'filePath' => $movedFile->getPathname()]);
 }
 /**
  * {@inheritdoc}
  */
 public function store(\SplFileInfo $localFile, $destFsAlias)
 {
     $filesystem = $this->mountManager->getFilesystem($destFsAlias);
     $storageData = $this->pathGenerator->generate($localFile);
     $file = $this->factory->create($localFile, $storageData, $destFsAlias);
     $error = sprintf('Unable to move the file "%s" to the "%s" filesystem.', $localFile->getPathname(), $destFsAlias);
     if (false === ($resource = fopen($localFile->getPathname(), 'r'))) {
         throw new FileTransferException($error);
     }
     try {
         $isFileWritten = $filesystem->writeStream($file->getKey(), $resource);
     } catch (FileExistsException $e) {
         throw new FileTransferException($error, $e->getCode(), $e);
     }
     if (false === $isFileWritten) {
         throw new FileTransferException($error);
     }
     $this->saver->save($file, ['flush_only_object' => true]);
     $this->deleteRawFile($localFile);
     return $file;
 }
 /**
  * {@inheritdoc}
  */
 public function createFromRawFile(\SplFileInfo $rawFile, $destFsAlias)
 {
     $pathInfo = $this->pathGenerator->generate($rawFile);
     $sha1 = sha1_file($rawFile->getPathname());
     if ($rawFile instanceof UploadedFile) {
         $originalFilename = $rawFile->getClientOriginalName();
         $extension = $rawFile->getClientOriginalExtension();
     } else {
         $originalFilename = $rawFile->getFilename();
         $extension = $rawFile->getExtension();
     }
     $size = filesize($rawFile->getPathname());
     $mimeType = MimeTypeGuesser::getInstance()->guess($rawFile->getPathname());
     $file = new $this->fileClass();
     $file->setKey($pathInfo['path'] . $pathInfo['file_name']);
     $file->setMimeType($mimeType);
     $file->setOriginalFilename($originalFilename);
     $file->setSize($size);
     $file->setExtension($extension);
     $file->setHash($sha1);
     $file->setStorage($destFsAlias);
     return $file;
 }