如何在Symfony中创建一个下载文件的链接

7
我进行了一些研究,发现了这篇文章:如何在Symfony2中创建用于下载生成文档的链接?

我尝试了这个解决方案,但它在浏览器中显示我的pdf文件,但是我想要的是当某人单击链接时,它直接下载文件。有没有一种使用Symfony实现这个目标的方法?
Kévin Duguay
1个回答

15

设置一个操作。 这里使用了路由的注释。 当然,您也可以使用yml、xml或您当前正在使用的任何其他格式。

/**
 * @Route("/download", name="download_file")
**/
public function downloadFileAction(){
    $response = new BinaryFileResponse('path/to/pdf.pdf');
    $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT,'pdf.pdf');
    return $response;
}

Twig模板:

<a href="{{path('download_file')}}">Download file</a>

谢谢,但我只有一个问题,我如何使用链接调用该操作,并且我不希望该链接更改我的页面? - Kévin Duguay
我猜你在使用Twig来进行视图处理,因此你需要使用php app/console router:debug命令来查找该方法的路由标识符,然后执行以下操作: <a href="{{ path('ROUTE_IDENTIFIER') }}">下载PDF</a>。我非常确定这不会重新加载你的页面。 - HypeR
@KévinDuguay 我更新了我的答案。将内容设置为附件时,它不会更改您的页面或重新加载它。 - Kris
精确的类命名空间是:Symfony\Component\HttpFoundation\BinaryFileResponse(不要忘记使用) - forsberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接