ホームページ >ウェブフロントエンド >jsチュートリアル >Ajax と Struts2 アクションを使用してファイルのダウンロードをトリガーするにはどうすればよいですか?

Ajax と Struts2 アクションを使用してファイルのダウンロードをトリガーするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-19 14:26:10809ブラウズ

How to Trigger File Downloads with Ajax and a Struts2 Action?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。