如何通过 <a> 元素使 PHPExcel 下载工作?
How to make PHPExcel download work through <a> element?
我写了一些代码来生成一个 excel (.xlsx) 文件供用户在我的网站上下载。我正在使用 Symfony2,尽管我认为这不是我遇到此问题的原因。这是我的代码片段:
$filename = "cmm_payment_report.xlsx";
header('Content-Type: application/vnd.ms-excel');
header(sprintf('Content-Disposition: attachment; filename="%s"', $filename));
header("Cache-Control: max-age=0");
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save("php://output");
如果我打开一个新页面并将此下载的 link 粘贴到浏览器中,它会正常工作并且我能够下载该文件。但是,如果我像这样将 link 放入 Twig 模板中:
<a href="{{ path('report_payment_excel', {payPeriod: app.request.get('pay-period')}) }}" target="_blank">
<button>Download as XLS</button>
</a>
没用。我单击 link,浏览器指示它正在加载,但在它停止加载后没有任何反应。如果我右键单击 > 在新选项卡中打开 link,那么它就可以工作。添加 target="_blank"
并不能解决问题。
问题是我的 <button>Download as XLS</button>
元素包含在 <form>
元素中,因此它无意中提交了表单,而不是遵循 link.
我写了一些代码来生成一个 excel (.xlsx) 文件供用户在我的网站上下载。我正在使用 Symfony2,尽管我认为这不是我遇到此问题的原因。这是我的代码片段:
$filename = "cmm_payment_report.xlsx";
header('Content-Type: application/vnd.ms-excel');
header(sprintf('Content-Disposition: attachment; filename="%s"', $filename));
header("Cache-Control: max-age=0");
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save("php://output");
如果我打开一个新页面并将此下载的 link 粘贴到浏览器中,它会正常工作并且我能够下载该文件。但是,如果我像这样将 link 放入 Twig 模板中:
<a href="{{ path('report_payment_excel', {payPeriod: app.request.get('pay-period')}) }}" target="_blank">
<button>Download as XLS</button>
</a>
没用。我单击 link,浏览器指示它正在加载,但在它停止加载后没有任何反应。如果我右键单击 > 在新选项卡中打开 link,那么它就可以工作。添加 target="_blank"
并不能解决问题。
问题是我的 <button>Download as XLS</button>
元素包含在 <form>
元素中,因此它无意中提交了表单,而不是遵循 link.