如何在 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); }
此程式碼建立一個名為 download.php 的單獨 PHP 腳本,負責下載 filename 參數中指定的檔案。
在 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中文網其他相關文章!