ホームページ >ウェブフロントエンド >jsチュートリアル >Ajax と Struts2 アクションを使用してファイルのダウンロードをトリガーするにはどうすればよいですか?
Ajax を使用した非同期ファイルのダウンロード
提供されたシナリオでは、ファイルのダウンロードに Struts2 アクションが使用されているが、jQuery が使用されているという問題が発生します。 post() 呼び出しは、ファイルのダウンロード ウィンドウを開く代わりに、ファイルをバイナリ ストリームとして取得します。この記事は、この問題に対処し、ファイルのダウンロード ウィンドウを表示するための解決策を提供することを目的としています。
Ajax を使用してファイルのダウンロードを有効にする鍵は、Content-Disposition 応答ヘッダーを利用することにあります。このヘッダーはattachmentに設定する必要があります。 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 ヘッダーを動的に設定できます。
Byこれらの手順を組み合わせると、Ajax を使用してファイルを非同期的にダウンロードし、ユーザーがファイルをローカルに保存できるように Struts2 アプリケーションを構成できます。
以上がAjax と Struts2 アクションを使用してファイルのダウンロードをトリガーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。