Téléchargement de fichiers via POST avec des données JSON en JavaScript/jQuery
Lors de l'utilisation de services Web RESTful, gestion à la fois des réponses JSON et binaires téléchargeables dans le côté client est un défi commun. Cet article explique comment y parvenir à l'aide de JavaScript et de jQuery.
Le scénario souhaité implique la soumission d'une requête POST avec des données JSON à un point de terminaison REST. Selon les paramètres de la requête, la réponse peut être soit des données JSON, soit un fichier téléchargeable. Pour gérer cela, nous explorons plusieurs options :
Utiliser AJAX :
La première approche consiste à utiliser la fonction jQuery $.ajax(). Cependant, l'option dataType pour les requêtes AJAX ne prend en charge que des types de données spécifiques, notamment JSON. Cela signifie qu'il n'est pas possible de télécharger directement un fichier à l'aide d'AJAX.
Générer une URL de fichier sur le serveur :
Une approche alternative consiste à demander au serveur de générer le fichier téléchargeable. fichier et renvoie une réponse JSON contenant une URL vers le fichier. Le client peut ensuite utiliser cette URL pour lancer le téléchargement. Cette méthode nécessite plusieurs appels au serveur, ce qui n'est peut-être pas idéal.
Utilisation d'un iFrame :
Une solution plus optimale consiste à utiliser un iFrame. Après avoir soumis la requête POST, un iFrame peut être créé dans le corps de l'application client et son attribut src peut être défini sur l'URL fournie. Au fur et à mesure du chargement de l'iFrame, le navigateur invitera l'utilisateur à télécharger le fichier.
<code class="javascript">$.post('/create_binary_file.php', postData, function(retData) { $("body").append("<iframe src='" + retData.url+ "' style='display: none;' ></iframe>"); });</code>
Avantages de la méthode iFrame :
Considérations :
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!