Maison >interface Web >js tutoriel >Comment puis-je télécharger des fichiers de manière asynchrone dans une application Struts2 à l'aide d'Ajax ?

Comment puis-je télécharger des fichiers de manière asynchrone dans une application Struts2 à l'aide d'Ajax ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-28 10:30:13488parcourir

How Can I Asynchronously Download Files in a Struts2 Application Using Ajax?

Téléchargement de fichiers asynchrone avec Ajax

Problème :

Dans une application Struts2, un appel jQuery Ajax récupère les données du flux binaire représentant un fichier à télécharger, mais les utilisateurs ne peuvent pas enregistrer le fichier localement.

Solution :

Approche du navigateur moderne (2019 et versions ultérieures)

Pour les navigateurs modernes, une approche simplifiée peut être adopté :

  1. Utilisez l'API fetch() pour récupérer le file :

    fetch('https://jsonplaceholder.typicode.com/todos/1')
      .then(resp => resp.blob())
  2. Créez une URL d'objet pour le fichier :

      .then(blob => {
     const url = window.URL.createObjectURL(blob);
  3. Créez une URL élément et définissez ses attributs :

     const a = document.createElement('a');
     a.style.display = 'none';
     a.href = url;
     a.download = 'todo-1.json';
  4. Ajoutez l'élément au document et cliquez dessus :

     document.body.appendChild(a);
     a.click();
  5. Supprimez l'URL de l'objet :

     window.URL.revokeObjectURL(url);
  6. Informer l'utilisateur du succès téléchargement :

     alert('your file has downloaded!');

Considérations supplémentaires :

  • Assurer la compatibilité avec les navigateurs cibles.
  • Gérer les grands les fichiers sont téléchargés séparément pour éviter d'éventuels problèmes de performances.

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