【问题标题】:How do I prompt the user to download a PHP-generated .CSV file, and how should I handle deleting it?如何提示用户下载 PHP 生成的 .CSV 文件,我应该如何处理删除它?
【发布时间】:2013-06-29 22:07:48
【问题描述】:

这是我基于一些 SQL 数据创建 .CSV 文件的 PHP 代码。它按预期工作,唯一的问题是它只是在服务器上创建一个 .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 csv download export-to-excel


    【解决方案1】:

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

    <?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);
    ?>
    

    【讨论】:

    • 修复了你的内容类型,csv 不是 excel
    • 我在他的问题中没有看到 excel 这个词。无论如何 csv 是通用的,并且可以被许多应用程序打开,excel 文件是一种专有格式
    • 其标记为“export-to-excel”
    • 啊,很好,他真的想要一个与 csv 文件不同的 excel 文件。
    • 非常感谢!原来我想我想多了。还在学习 PHP,对标头了解不多:)
    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多