如何提示用户下载PHP生成的.CSV文件,以及如何删除它


How do I prompt the user to download a PHP-generated .CSV file, and how should I handle deleting it?

下面是我的PHP代码,用于基于一些SQL数据创建.CSV文件。它按预期工作,唯一的问题是它只是在服务器上创建了一个.CSV文件,而不会提示用户下载它

<?php
    require_once "../assets/repository/mysql.php";
    $query = "SELECT * FROM datashep_AMS.COMPLETE_APPLICATIONS";
    $results = mysql_query($query);
    $first = true;
    $out = fopen('export.csv', 'w');
    while($row = mysql_fetch_assoc($results)){
        if($first){
            $titles = array();
            foreach($row as $key=>$val){
                $titles[] = $key;
            }
            fputcsv($out, $titles);
            $first = false;
        }
        fputcsv($out, $row);
    }
    fclose($out);
?>

因此,我的问题是,如何让用户在生成文件后立即下载该文件?

而且,一旦他们下载(或拒绝),我应该如何处理从服务器上删除.CSV文件?

无需在服务器上存储任何内容(因此无需删除…)。只需将结果写回浏览器并相应地设置标题:

<?php
require_once "../assets/repository/mysql.php";
$query = "SELECT * FROM datashep_AMS.COMPLETE_APPLICATIONS";
$results = mysql_query($query);
$first = true;
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="export.csv"');
header('Cache-Control: max-age=0');
$out = fopen('php://output', 'w');
while($row = mysql_fetch_assoc($results)){
    if($first){
        $titles = array();
        foreach($row as $key=>$val){
            $titles[] = $key;
        }
        fputcsv($out, $titles);
        $first = false;
    }
    fputcsv($out, $row);
}
fclose($out);
?>