Téléchargement de fichiers asynchrone à l'aide d'Ajax
Dans le scénario fourni, vous rencontrez un problème dans lequel une action Struts2 est utilisée pour le téléchargement de fichiers, mais jQuery L'appel post() récupère le fichier sous forme de flux binaire au lieu d'ouvrir une fenêtre de téléchargement de fichier. Cet article vise à résoudre le problème et à fournir une solution pour ouvrir la fenêtre de téléchargement de fichiers.
La clé pour activer les téléchargements de fichiers à l'aide d'Ajax réside dans l'utilisation de l'en-tête de réponse Content-Disposition. Cet en-tête doit être défini sur pièce jointe ; filename={fileName}, où {fileName} représente le nom de fichier souhaité. En définissant cet en-tête, vous demandez au navigateur d'inviter l'utilisateur avec une fenêtre de téléchargement de fichier.
Pour modifier l'en-tête Content-Disposition de manière dynamique dans votre action Struts2, vous pouvez utiliser un intercepteur. Voici un exemple de la façon dont vous pouvez procéder :
public class DownloadInterceptor implements Interceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); response.setHeader("Content-Disposition", "attachment; filename=" + actionInvocation.getArgs()[0]); // Replace with your code return invocation.invoke(); } @Override public void destroy() {} @Override public void init() {} }
Une fois que vous avez implémenté l'intercepteur, vous pouvez l'appliquer à l'action de téléchargement pour définir dynamiquement l'en-tête Content-Disposition.
Par en combinant ces étapes, vous pouvez configurer votre application Struts2 pour télécharger des fichiers de manière asynchrone à l'aide d'Ajax et permettre aux utilisateurs d'enregistrer les fichiers localement.
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!