首页 >后端开发 >php教程 >如何从 PHP 脚本下载 CSV 文件?

如何从 PHP 脚本下载 CSV 文件?

Patricia Arquette
Patricia Arquette原创
2024-11-09 12:42:02917浏览

How to Download a CSV File from a PHP Script?

如何从 PHP 脚本生成和下载 CSV 文件:综合指南

简介

创建和下载 CSV(逗号分隔值)文件通常是数据交换和分析所必需的。在 PHP 中,可以通过多种方法完成此任务。本指南将提供有关如何实现此目标的彻底演练,即使对于新手程序员也是如此。

创建 CSV 字符串

要从数组创建 CSV 字符串,每个元素必须转换为逗号分隔值。这可以使用 fputcsv() 函数来实现:

$output = fopen("php://temp", "w");
foreach ($array as $line) {
    fputcsv($output, $line);
}
fseek($output, 0);

发送 HTTP 标头

为了提示浏览器保存 CSV 文件而不是显示它,我们需要发送特定的 HTTP 标头:

header('Content-Disposition: attachment; filename="filename.csv"');
header('Content-Type: text/csv');

生成并下载 CSV 文件

结合上述步骤,我们可以创建一个生成和下载 CSV 文件的函数:

function downloadCsv(array $array, string $filename): void
{
    // Create the CSV string
    $output = fopen("php://temp", "w");
    foreach ($array as $line) {
        fputcsv($output, $line);
    }
    fseek($output, 0);
    
    // Send HTTP headers
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Content-Type: text/csv');
    
    // Send the CSV file
    fpassthru($output);
}

您可以使用此功能通过以下代码下载 CSV 文件:

$array = [
    ['id', 'name', 'email'],
    ['1', 'John', 'john@example.com'],
    ['2', 'Jane', 'jane@example.com']
];
downloadCsv($array, 'contacts.csv');

替代方法

而不是使用php://temp,可以直接写入输出缓冲区:

function downloadCsv2(array $array, string $filename): void
{
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Content-Type: text/csv');
    
    $f = fopen('php://output', 'w');
    foreach ($array as $line) {
        fputcsv($f, $line);
    }
}

以上是如何从 PHP 脚本下载 CSV 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn