Maison > interface Web > js tutoriel > le corps du texte

Comment télécharger des fichiers via POST avec des données JSON en JavaScript/jQuery ?

DDD
Libérer: 2024-10-19 15:22:30
original
575 Les gens l'ont consulté

How to Download Files via POST with JSON Data in JavaScript/jQuery?

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

Avantages de la méthode iFrame :

  • Simplifie le côté serveur mise en œuvre, éliminant le besoin de gestion de fichiers.
  • Permet de récupérer des informations supplémentaires (par exemple, taille du fichier, temps de génération) avant de lancer le téléchargement.
  • Compatible avec les réponses JSON et les fichiers binaires .

Considérations :

  • Cette méthode nécessite que le serveur fournisse une URL de téléchargement dans la réponse JSON.
  • Le fichier L'URL doit être éphémère pour éviter toute utilisation malveillante.
  • La compatibilité du navigateur peut varier et le style d'affichage : aucun peut parfois entraîner des problèmes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal