PHP で AJAX 経由でファイルをダウンロードする方法
PHP で AJAX 呼び出しを通じてファイルをダウンロードするには、従来の AJAX メソッドを超えた創造的なアプローチが必要です。この課題に対処する方法は次のとおりです。
ファイルのダウンロードに AJAX を使用する代わりに、新しいウィンドウを開いてそのアドレスをダウンロード リンクに設定することを検討してください。これはシンプルで効果的な手法です。
あるいは、JavaScript の document.location プロパティを使用して、ユーザーのブラウザをダウンロード リンクに直接リダイレクトすることもできます。以下に例を示します。
function csv() { ajaxRequest = ajax(); postdata = "data=" + document.getElementById("id").value; ajaxRequest.onreadystatechange = function () { var ajaxDisplay = document.getElementById('ajaxDiv'); if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { document.location = 'download.php?filename=' + ajaxRequest.responseText; } }; ajaxRequest.open("POST", "csv.php", false); ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ajaxRequest.send(postdata); }
このコードは、filename パラメーターで指定されたファイルのダウンロードを担当する、download.php という別の PHP スクリプトを作成します。
download.php では、次のコードを使用します。ファイルのダウンロードを強制するコード スニペット:
$fileName = 'file.csv'; $downloadFileName = 'newfile.csv'; if (file_exists($fileName)) { header('Content-Description: File Transfer'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename='.$downloadFileName); ob_clean(); flush(); readfile($fileName); exit; }
以上がAJAX と PHP を使用してファイルを効果的にダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。