Maison >développement back-end >tutoriel php >Comment déclencher un téléchargement de fichier à l'aide d'AJAX : téléchargement direct ou redirection côté serveur ?

Comment déclencher un téléchargement de fichier à l'aide d'AJAX : téléchargement direct ou redirection côté serveur ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 00:12:24948parcourir

How to Trigger a File Download Using AJAX:  Direct Download or Server-Side Redirect?

Télécharger un fichier avec une requête AJAX

Lorsque vous tentez de lancer une « demande de téléchargement ajax » en cliquant sur un bouton, il est courant d'implémenter du code comme le ci-dessous :

var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php");
xhr.send();

Avec le PHP suivant script :

<?
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= file.txt");
header("Content-Transfer-Encoding: binary");    
readfile("file.txt");
?>

Cependant, cette approche peut ne pas donner le résultat souhaité. Pour lancer efficacement un téléchargement, envisagez de mettre en œuvre l'une des alternatives suivantes :

Option 1 : utiliser l'attribut "download"

Dans les navigateurs modernes comme Firefox et Chrome, le L'attribut 'download' offre un moyen pratique de lancer des téléchargements à partir d'une page Web sans nécessiter d'interaction côté serveur. Voici un exemple :

<a href="file.txt" download="file.txt">Download</a>

Option 2 : accédez au script de téléchargement à l'aide d'AJAX ou de Window.location

Si l'attribut « téléchargement » n'est pas approprié option, vous pouvez utiliser AJAX ou window.location pour accéder au script de téléchargement. En utilisant AJAX, vous pouvez effectuer une requête asynchrone, puis utiliser sa fonction de rappel de réussite pour rediriger vers le script de téléchargement :

$.ajax({
    url: 'download.php',
    type: 'POST',
    success: function() {
        window.location = 'download.php';
    }
});

Vous pouvez également simplement utiliser window.location pour accéder au script de téléchargement :

window.location = 'download.php';

Bien que l'approche AJAX offre une certaine flexibilité, l'utilisation de window.location est généralement plus efficace et plus simple.

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:
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