ホームページ > バックエンド開発 > PHPチュートリアル > AJAX を使用してファイルのダウンロードをトリガーする方法: 直接ダウンロードまたはサーバー側リダイレクト?

AJAX を使用してファイルのダウンロードをトリガーする方法: 直接ダウンロードまたはサーバー側リダイレクト?

Mary-Kate Olsen
リリース: 2024-12-17 00:12:24
オリジナル
902 人が閲覧しました

How to Trigger a File Download Using AJAX:  Direct Download or Server-Side Redirect?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート