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

Ajax を使用して Struts2 アプリケーションでファイルを非同期的にダウンロードするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-28 10:30:13482ブラウズ

How Can I Asynchronously Download Files in a Struts2 Application Using Ajax?

Ajax を使用した非同期ファイルのダウンロード

問題:

Struts2 アプリケーションで、jQuery Ajax 呼び出しによりバイナリ ストリーム データが取得されるダウンロードされるファイルを表しますが、ユーザーはファイルを保存できません

解決策:

最新のブラウザーのアプローチ (2019 年以降)

最新のブラウザーの場合、簡素化されたアプローチで次のことが可能です。なれ採用:

  1. fetch() API を使用してファイルを取得します:

    fetch('https://jsonplaceholder.typicode.com/todos/1')
      .then(resp => resp.blob())
  2. ファイルのオブジェクト URL を作成します:

      .then(blob => {
     const url = window.URL.createObjectURL(blob);
  3. 隠しファイルを作成する要素を追加してその属性を設定します:

     const a = document.createElement('a');
     a.style.display = 'none';
     a.href = url;
     a.download = 'todo-1.json';
  4. 要素をドキュメントに追加してクリックします:

     document.body.appendChild(a);
     a.click();
  5. オブジェクト URL を削除します:

     window.URL.revokeObjectURL(url);
  6. 通知ダウンロードが成功したユーザー:

     alert('your file has downloaded!');

追加の考慮事項:

  • ターゲット ブラウザとの互換性を確認してください。
  • 潜在的なパフォーマンスの問題を回避するために、大きなファイルのダウンロードを個別に処理します。

以上がAjax を使用して Struts2 アプリケーションでファイルを非同期的にダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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