在我的Symfony 2项目中,当用户点击查看pdf文件的链接时,我想在浏览器中显示pdf。 pdf文件包含在我的"视图"文件夹,在名为" pdf-files"。
的子文件夹中如何调整以下控制器功能以便在浏览器中显示pdf文件?
/**
* @Route("/pdf/{pdfFilename}")
*/
public function pdfAction($pdfFilename) {
return $this->render('@App/pdf-files/'.$pdfFilename);
}
答案 0 :(得分:2)
所有关于http请求的conten-type标头。所以只需设置它:
$response = $this->render('@App/pdf-files/'.$pdfFilename);
$response->headers->set('Content-Type', 'application/pdf');
return $response;
答案 1 :(得分:2)
要提供静态文件,您可能需要使用BinaryFileResponse类。在此类响应中,您可以设置public function pdfAction($pdfFilename)
{
$kernel = $this->get('kernel');
$path = $kernel->locateResource('@AppBundle/Resources/pdf-files/'.$pdfFilename);
$response = new BinaryFileResponse($path)
$response->headers->set('Content-Type', 'application/pdf');
$response->setContentDisposition(
ResponseHeaderBag::DISPOSITION_INLINE, //use ResponseHeaderBag::DISPOSITION_ATTACHMENT to save as an attachement
$pdfFilename
);
return $response;
}
- 此文件是应在浏览器中打开还是作为附件下载。
因此,您的代码应该类似于:
Resources
编辑:,因为locateResource默认情况下在pdf-files
目录下查找文件我建议将views
目录从Resources
目录移到val obsList: Observable[List[MyEntry] = Observable.from(getListEntry)
// getListEntry would give me a List[MyEntry]