ホームページ >バックエンド開発 >PHPチュートリアル >AJAX を使用してファイルのダウンロードをトリガーする方法: 直接ダウンロードまたはサーバー側リダイレクト?
AJAX リクエストによるファイルのダウンロード
ボタンのクリック時に「ajax ダウンロード リクエスト」を開始しようとする場合、次のようなコードを実装するのが一般的です。以下:
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
以下の PHP とともにscript:
<? header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
ただし、このアプローチでは望ましい結果が得られない可能性があります。ダウンロードを効果的に開始するには、次のいずれかの代替手段の実装を検討してください。
オプション 1: 'download' 属性を利用する
Firefox や Chrome などの最新のブラウザでは、 「download」属性は、サーバー側の対話を必要とせずに、Webページ内からダウンロードを開始する便利な方法を提供します。次に例を示します。
<a href="file.txt" download="file.txt">Download</a>
オプション 2: AJAX または Window.location を使用してダウンロード スクリプトに移動します。
「download」属性が適切でない場合オプションを使用すると、AJAX または window.location を使用してダウンロード スクリプトに移動できます。 AJAX を使用すると、非同期リクエストを実行し、その成功コールバック関数を使用してダウンロード スクリプトにリダイレクトできます:
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
または、単純に window.location を使用してダウンロード スクリプトに移動することもできます:
window.location = 'download.php';
AJAX アプローチにはある程度の柔軟性がありますが、通常は window.location を使用する方が効率的で簡単です。
以上がAJAX を使用してファイルのダウンロードをトリガーする方法: 直接ダウンロードまたはサーバー側リダイレクト?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。