我試圖使用PHP來強制客戶端計算機上下載(文件對話框 - 沒有什麼險惡)。我發現很多頁面推薦使用header()函數來控制我的PHP腳本的響應,但是我對此沒有任何好運。我的代碼如下:PHP強制文件下載
$file = $_POST['fname'];
if(!($baseDir . '\\AgcommandPortal\\agcommand\\php\\utils\\ISOxml\\' . $file)) {
die('File not found.');
} else {
header('Pragma: public');
header('Content-disposition: attachment; filename="tasks.zip"');
header('Content-type: application/force-download');
header('Content-Length: ' . filesize($file));
header('Content-Description: File Transfer');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
ob_end_clean();
readfile($baseDir . '\\AgcommandPortal\\agcommand\\php\\utils\\ISOxml\\' . $file);
}
我使用這個JavaScript調用它:
$.ajax({
url: url,
success: function(text) {
var req = new XMLHttpRequest();
req.open("POST", 'php/utils/getXMLfile.php', true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send('fname=' + encodeURIComponent(text));
}
});
這將返回文件作爲文本的內容,但不會觸發下載對話框。有沒有人有什麼建議?而不是使用AJAX的
我不認爲它是重複的。這裏的問題稍有不同。問題是post操作的結果不會觸發由php生成的答案的頭部中指定的下載行爲。 – ALoopingIcon 2017-02-11 16:37:21