使用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中文網其他相關文章!