使用 Ajax 异步文件下载
在提供的场景中,您遇到一个问题,即使用 Struts2 操作来下载文件,但使用 jQuery post() 调用以二进制流形式检索文件,而不是打开文件下载窗口。本文旨在解决该问题,并提供提示文件下载窗口的解决方案。
使用 Ajax 实现文件下载的关键在于利用 Content-Disposition 响应头。该标题应设置为附件; filename={fileName},其中 {fileName} 表示所需的文件名。通过设置此标头,您可以指示浏览器通过文件下载窗口提示用户。
要在 Struts2 操作中动态修改 Content-Disposition 标头,您可以使用拦截器。以下是如何执行此操作的示例:
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() {} }
实现拦截器后,您可以将其应用于下载操作以动态设置 Content-Disposition 标头。
通过结合这些步骤,您可以将 Struts2 应用程序配置为使用 Ajax 异步下载文件,并允许用户在本地保存文件。
以上是如何使用 Ajax 和 Struts2 操作触发文件下载?的详细内容。更多信息请关注PHP中文网其他相关文章!