Maison > interface Web > js tutoriel > Comment forcer le téléchargement d'un fichier CSV via AJAX en PHP ?

Comment forcer le téléchargement d'un fichier CSV via AJAX en PHP ?

Susan Sarandon
Libérer: 2024-10-24 08:37:01
original
311 Les gens l'ont consulté

How to Force-Download a CSV File Through AJAX in PHP?

Téléchargement de fichiers avec PHP et AJAX

Question :

Comment puis-je forcer le téléchargement d'un fichier CSV via un AJAX appeler en PHP ?

Contexte :

Vous avez créé une fonction AJAX qui génère un fichier CSV basé sur la saisie de l'utilisateur. Après la création, vous souhaitez télécharger automatiquement le fichier sans rien demander à l'utilisateur.

Code PHP :

Dans votre fichier PHP (csv.php), vous avez tenté de utilisez le script suivant pour forcer le téléchargement du fichier CSV :

<code class="php">$fileName = 'file.csv';
$downloadFileName = 'newfile.csv';

if (file_exists($fileName)) {
    header('Content-Description: File Transfer');
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename='.$downloadFileName);
    ob_clean();
    flush();
    readfile($fileName);
    exit;
}
echo "done";</code>
Copier après la connexion

Problème :

Lorsque vous exécutez ce script à la fin de csv.php, le contenu de les fichiers sont affichés sur la page au lieu d'être téléchargés.

Solution :

AJAX ne peut pas être utilisé pour télécharger directement des fichiers. Pour forcer le téléchargement du fichier, vous pouvez utiliser l'une des méthodes suivantes :

  • Nouvelle fenêtre contextuelle : Créez une nouvelle fenêtre avec le lien de téléchargement comme adresse.
  • document.location = ...: Utilisez la propriété document.location = ... pour définir l'emplacement actuel du document sur le lien de téléchargement.

Exemple :

Vous pouvez modifier votre fonction AJAX comme suit pour faire apparaître une nouvelle fenêtre avec le lien de téléchargement :

<code class="javascript">function csv() {

    ajaxRequest = ajax();

    postdata = "data=" + document.getElementById("id").value;

    ajaxRequest.onreadystatechange = function () {
        var ajaxDisplay = document.getElementById('ajaxDiv');
        if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
            window.open(ajaxRequest.responseText);  // Pop up a new window with the download link
        }
    }

    ajaxRequest.open("POST", "csv.php", false);
    ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    ajaxRequest.send(postdata);
}</code>
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
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