/** * 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; }
/** * 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' => []]); }