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 ?
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é :
Utilisez l'API fetch() pour récupérer le file :
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(resp => resp.blob())
Créez une URL d'objet pour le fichier :
.then(blob => { const url = window.URL.createObjectURL(blob);
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';
Ajoutez l'élément au document et cliquez dessus :
document.body.appendChild(a); a.click();
Supprimez l'URL de l'objet :
window.URL.revokeObjectURL(url);
Informer l'utilisateur du succès téléchargement :
alert('your file has downloaded!');
Considérations supplémentaires :
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!