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
364 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!

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