0
我有一個webapp模擬終端。上sec/cmd_process.php
執行 - 如果用戶鍵入download log
到終端,下面的腳本
AJAX/jQuery的
:
使用下面的腳本(部)的每一個命令經由AJAX張貼PHP
if(isset($_POST['n'])){
echo $_POST['n'];
$t = explode(' ', $_POST['n']);
if(strtolower($t[0])=='download'){
if(!isset($t[1])) shout_error("No download specified");
//Download Log
elseif($t[1]=='log'){
$stmt = $dbh->prepare("SELECT * FROM `tap_log` ORDER BY `time`");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row) {
$user = user_by_id($row['user']);
$data.= "{$row['time']} - User {$user['id']} ({$user['name1']} {$user['name2']}) - {$row['information']} ({$row['subject']})".PHP_EOL;
}
$handle = fopen('log.txt','w+');
fwrite($handle, $data);
$path = 'log.txt';
header('Content-Transfer-Encoding: binary');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($path)).' GMT');
header('Accept-Ranges: bytes');
header('Content-Length:'.filesize($path));
header('Content-Encoding: none');
header('Content-Disposition: attachment; filename='.$path);
readfile($path);
fclose($handle);
}
}
}
我想要發生的是通過「另存爲...」對話框下載生成的文件log.txt
。如果您直接訪問帶有這些標頭的PHP頁面,此代碼可行,但是如何通過jQuery/AJAX使其工作?
強制下載不可能通過ajax,AFAIK – Varun
有沒有其他的選擇? – Ben
無論是直接重定向到PHP,還是一個厚臉皮的解決方案,都會創建一個隱藏的'',其中href將用戶重定向到PHP頁面,並且您可以強制下載。 – Varun