Ojs\SiteBundle\Controller\DownloadController::articleFileAction PHP Метод

articleFileAction() публичный Метод

public articleFileAction ( Ojs\JournalBundle\Entity\ArticleFile $articleFile ) : BinaryFileResponse
$articleFile Ojs\JournalBundle\Entity\ArticleFile
Результат Symfony\Component\HttpFoundation\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;
    }