Maison > développement back-end > tutoriel php > Comment télécharger un fichier CSV à partir d'un script PHP ?

Comment télécharger un fichier CSV à partir d'un script PHP ?

Patricia Arquette
Libérer: 2024-11-09 12:42:02
original
897 Les gens l'ont consulté

How to Download a CSV File from a PHP Script?

Comment générer et télécharger des fichiers CSV à partir de scripts PHP : un guide complet

Introduction

La création et le téléchargement de fichiers CSV (Comma-Separated Values) sont souvent nécessaires pour l'échange et l'analyse des données. En PHP, cette tâche peut être accomplie via plusieurs méthodes. Ce guide fournira une procédure détaillée sur la façon d'y parvenir, même pour les programmeurs débutants.

Création de la chaîne CSV

Pour créer une chaîne CSV à partir d'un tableau, chaque L'élément doit être converti en une valeur séparée par des virgules. Ceci peut être réalisé en utilisant la fonction fputcsv() :

$output = fopen("php://temp", "w");
foreach ($array as $line) {
    fputcsv($output, $line);
}
fseek($output, 0);
Copier après la connexion

Envoi d'en-têtes HTTP

Pour demander au navigateur d'enregistrer le fichier CSV au lieu de l'afficher, nous besoin d'envoyer des en-têtes HTTP spécifiques :

header('Content-Disposition: attachment; filename="filename.csv"');
header('Content-Type: text/csv');
Copier après la connexion

Génération et téléchargement du CSV Fichier

En combinant les étapes ci-dessus, nous pouvons créer une fonction pour générer et télécharger des fichiers 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);
}
Copier après la connexion

Vous pouvez utiliser cette fonction pour télécharger des fichiers CSV avec le code suivant :

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

Méthode alternative

Au lieu d'utiliser php://temp, vous pouvez écrire directement dans le tampon de sortie :

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);
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal