コード例 #1
0
ファイル: DownloadController.php プロジェクト: ojs/ojs
 /**
  * @param ArticleFile $articleFile
  * @return BinaryFileResponse
  */
 public function articleFileAction(ArticleFile $articleFile)
 {
     $fileManager = $this->get('jb_fileuploader.file_history.manager');
     $rootDir = $this->getParameter('kernel.root_dir');
     $assetHelper = $this->get('templating.helper.assets');
     $fileHistory = $fileManager->findOneByFileName($articleFile->getFile());
     $path = $rootDir . '/../web' . $fileManager->getUrl($fileHistory);
     $path = preg_replace('/\\?' . $assetHelper->getVersion() . '$/', '', $path);
     $explode = explode('.', $fileHistory->getOriginalName());
     $mime = end($explode);
     if (!empty($articleFile->getArticle()->getDoi())) {
         $fileOriginalName = $articleFile->getArticle()->getDoi() . '-' . $articleFile->getId() . '.' . $mime;
     } else {
         $fileOriginalName = $articleFile->getArticle() . '-' . $articleFile->getId() . '.' . $mime;
     }
     $fileOriginalName = str_replace('/', '-', $fileOriginalName);
     $fileOriginalName = str_replace('\\', '-', $fileOriginalName);
     $fs = new Filesystem();
     if (!$fs->exists($path)) {
         throw $this->createNotFoundException();
     }
     $response = new BinaryFileResponse($path);
     $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, preg_replace('/[[:^print:]]/', '_', $fileOriginalName));
     $event = new DownloadArticleFileEvent($articleFile);
     $dispatcher = $this->get('event_dispatcher');
     $dispatcher->dispatch(SiteEvents::DOWNLOAD_ARTICLE_FILE, $event);
     return $response;
 }
コード例 #2
0
 public function articleFileAction(ArticleFile $articleFile)
 {
     $fileManager = $this->get('jb_fileuploader.file_history.manager');
     $rootDir = $this->getParameter('kernel.root_dir');
     $assetHelper = $this->get('templating.helper.assets');
     $fileHistory = $fileManager->findOneByFileName($articleFile->getFile());
     $path = $rootDir . '/../web' . $fileManager->getUrl($fileHistory);
     $path = preg_replace('/\\?' . $assetHelper->getVersion() . '$/', '', $path);
     $response = new BinaryFileResponse($path);
     $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, preg_replace('/[[:^print:]]/', '_', $fileHistory->getOriginalName()));
     $event = new DownloadArticleFileEvent($articleFile);
     $dispatcher = $this->get('event_dispatcher');
     $dispatcher->dispatch(SiteEvents::DOWNLOAD_ARTICLE_FILE, $event);
     return $response;
 }