Home >Backend Development >PHP Tutorial >How to Download a CSV File from a PHP Script?

How to Download a CSV File from a PHP Script?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 12:42:02903browse

How to Download a CSV File from a PHP Script?

How to Generate and Download CSV Files from PHP Scripts: A Comprehensive Guide

Introduction

Creating and downloading CSV (Comma-Separated Values) files is often necessary for data exchange and analysis. In PHP, this task can be accomplished through several methods. This guide will provide a thorough walkthrough on how to achieve this, even for novice programmers.

Creating the CSV String

To create a CSV string from an array, each element must be converted into a comma-separated value. This can be achieved using the fputcsv() function:

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

Sending HTTP Headers

To prompt the browser to save the CSV file instead of displaying it, we need to send specific HTTP headers:

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

Generating and Downloading the CSV File

Combining the above steps, we can create a function to generate and download CSV files:

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

You can use this function to download CSV files with the following code:

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

Alternative Method

Instead of using php://temp, you can directly write to the output buffer:

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

The above is the detailed content of How to Download a CSV File from a PHP Script?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn