/**
  * Send or render single media.
  *
  * @Route("/media/{mediaId}.{extension}", options={"expose"=true}, name="swp_media_get")
  * @Method("GET")
  */
 public function getAction($mediaId)
 {
     $dm = $this->container->get('swp.object_manager.media');
     $pathBuilder = $this->container->get('swp_multi_tenancy.path_builder');
     $mediaBasePath = $this->container->getParameter('swp_multi_tenancy.persistence.phpcr.media_basepath');
     $media = $dm->find(null, $pathBuilder->build($mediaBasePath) . '/' . $mediaId);
     if (null === $media) {
         throw new NotFoundHttpException('Media was not found.');
     }
     $response = new Response();
     if ($media instanceof Image) {
         $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $mediaId . '.' . $media->getFileExtension());
     } else {
         $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $mediaId . '.' . $media->getFileExtension());
     }
     $response->headers->set('Content-Disposition', $disposition);
     $response->headers->set('Content-Type', Mime::getMimeFromExtension($media->getFileExtension()));
     $response->setPublic();
     $response->setMaxAge(63072000);
     $response->setSharedMaxAge(63072000);
     $mediaManager = $this->container->get('swp_content_bundle.manager.media');
     $response->setContent($mediaManager->getFile($media));
     return $response;
 }
Exemple #2
0
 /**
  * Function to force download a file
  * @param type $buffer data to download
  * @param type $filename filename
  * @return response
  */
 function renderDownload($buffer, $filename)
 {
     $ext = "";
     $mime = "application/octet-stream";
     $dotpos = Stringy::create($filename)->indexOfLast(".");
     if ($dotpos !== FALSE) {
         if ($dotpos < strlen($filename)) {
             $dotpos++;
         }
         $ext = Stringy::create($filename)->substr($dotpos)->__toString();
         $mime = \Hoa\Mime\Mime::getMimeFromExtension($ext);
     }
     $array = array();
     $array["Content-Type"] = $mime;
     $array["Content-Disposition"] = "attachment; filename={$filename}";
     return $this->renderRaw($buffer, 200, $array);
 }
 /**
  * Checks if media exists in storage.
  *
  * @ApiDoc(
  *     resource=true,
  *     description="Gets a single media file",
  *     statusCodes={
  *         404="Returned when file doesn't exist.",
  *         200="Returned on form errors"
  *     }
  * )
  * @Route("/api/{version}/assets/push/{mediaId}", options={"expose"=true}, defaults={"version"="v1"}, requirements={"mediaId"=".+"}, name="swp_api_assets_get")
  * @Route("/api/{version}/assets/get/{mediaId}", options={"expose"=true}, defaults={"version"="v1"}, requirements={"mediaId"=".+"}, name="swp_api_assets_get_1")
  * @Method("GET")
  */
 public function getAssetsAction($mediaId)
 {
     $media = $this->get('swp.repository.media')->getByCriteria(new Criteria(['assetId' => $mediaId]), [], 'am')->getQuery()->getOneOrNullResult();
     if (null === $media) {
         throw new ResourceNotFoundException('Media don\'t exists in storage');
     }
     $mediaManager = $this->container->get('swp_content_bundle.manager.media');
     return new SingleResourceResponse(['media_id' => $mediaId, 'URL' => $mediaManager->getMediaPublicUrl($media), 'media' => base64_encode($mediaManager->getFile($media)), 'mime_type' => Mime::getMimeFromExtension($media->getFileExtension()), 'filemeta' => []]);
 }