正在创建临时csv下载链接PHP


Creating temporary csv download link PHP

我有以下PHP代码来获取多维数组并将其输出到PHP页面目录中的文件中。这很管用。

我正在寻找一种解决方案,在该代码所在的页面上创建一个临时下载链接,以便用户可以选择是否单击该链接,并在页面关闭或某个固定时间删除该文件。

我还没有找到一个如何在临时基础上实现这一点的好例子。使用tmpfile()似乎不允许我创建.csv文件(它只是.tmp),而且我甚至不确定该文件在页面加载后是否存在(足够长的时间供用户下载)。

此外,许多示例都假设信息已经通过$_POST传入。我的代码所在的页面已经是上一次POST操作的目标。我不确定如何将$results数组中的数据转换为理论上的download.php文件。

我正处于一个十字路口,我的具体问题似乎与我今天在SO上发现的任何问题都不重复。想法?(注意:空白数组只是作为每组值的分隔符)

$fp = fopen('file.csv','w'); 
foreach ($results as $arrays){
    foreach ($arrays as $fields) {
        fputcsv($fp, $fields);
    }
    $blanks = array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
    fputcsv($fp, $blanks);
}
fclose($fp);

问题似乎是,在创建实际文件时,却在创建临时文件。临时文件是指在运行时创建和销毁。如果您试图创建一个在服务器上实际存在很短时间的文件,则需要使用file_put_contents。然后,您将在服务器上有一个包含CSV内容的文件。您可以创建一个函数来创建文件并返回位置,然后将该位置传递给HTML页面。然后,如果文件过期,您需要创建一个清理例程来偶尔清空目录。

我希望这能让你朝着正确的方向前进!