生成CSV文件,然后强制下载文件

时间:2009-09-28 15:42:31

标签: php

我有一个问题,我的申请表如下。

首先向用户回应已生成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文件中,我不知道如何排除它。

4 个答案:

答案 0 :(得分:3)

解决方案非常简单。 由于您需要两种不同的标题类型,因此您必须创建2个不同的页面。

第一页显示“csv文件的构建已开始”并包含带有第二页的iframe和带有真实csv文件和附件标题的第二页。

答案 1 :(得分:1)

您无法通过HTTP强制下载任何内容。这不是HTTP的工作方式。如果您想要下载某些内容,那么它必须是响应用户请求的资产。这意味着用户必须执行某些操作才能显式触发下载请求,或者下载必须响应AJAX请求。

答案 2 :(得分:0)

你回应的任何东西都将进入CSV。您不能在同一个脚本中回显和输出CSV。

答案 3 :(得分:0)

用户在您的页面上 - 他们点击“构建CSV”链接。然后使用一些非常非常基本的JS,你可以在服务器端PHP上显示一条消息/模态/弹出窗口,说明“构建csv文件已启动......”,你可以从实际生成CSV的页面中删除该回显系统将提示用户输入文件。