我有一个问题,我的申请表如下。
首先向用户回应已生成csv文件的生成。
例如。 echo 'Building of csv file started';
然后我构建了csv文件。
现在我想强制下载文件,这很有效。
这是我的代码
header('Content-Type: application/csv');
header('Content-Disposition:attachment;filename='.$year.'_'.$month.'_'.'export.csv');
header('Pragma: no-cache');
echo readfile($myFile);
没有第一个回应'csv文件的构建已启动'包含在CSV文件中,我不知道如何排除它。
答案 0 :(得分:3)
解决方案非常简单。 由于您需要两种不同的标题类型,因此您必须创建2个不同的页面。
第一页显示“csv文件的构建已开始”并包含带有第二页的iframe和带有真实csv文件和附件标题的第二页。
答案 1 :(得分:1)
您无法通过HTTP强制下载任何内容。这不是HTTP的工作方式。如果您想要下载某些内容,那么它必须是响应用户请求的资产。这意味着用户必须执行某些操作才能显式触发下载请求,或者下载必须响应AJAX请求。
答案 2 :(得分:0)
你回应的任何东西都将进入CSV。您不能在同一个脚本中回显和输出CSV。
答案 3 :(得分:0)
用户在您的页面上 - 他们点击“构建CSV”链接。然后使用一些非常非常基本的JS,你可以在服务器端PHP上显示一条消息/模态/弹出窗口,说明“构建csv文件已启动......”,你可以从实际生成CSV的页面中删除该回显系统将提示用户输入文件。