How to Download a CSV File from a PHP Script?

Patricia Arquette
Release: 2024-11-09 12:42:02
Original
825 people have browsed it

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);
Copy after login

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');
Copy after login

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);
}
Copy after login

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');
Copy after login

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);
    }
}
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template