我試圖強制使用稱爲'證明'的JavaScript字符串下載文件。我創建了一個隱藏窗體,它觸發了一個來自PHP腳本的動作。我沒有使用window.location.href的原因是因爲變量Proof很長,get方法無法處理它。強制下載與隱藏的表單不工作
//在點擊按鈕保存
$("#save").click(function() {
var Proof = $("#main").html();
var url = '/download-to-file.php';
//send request
jQuery('<form action="'+ url +'" method="post">'+
'<input type="hidden" name="Proof" value="'+ Proof +'" />'+
'</form>').appendTo('body').submit().remove();
});
PHP代碼:
<?php
$Proof = $_POST["Proof"];
$proof = stripslashes($Proof);
$file = 'savedproof.txt';
file_put_contents($file, $proof);
header('Content-disposition: attachment; filename="'.$file.'"');
header("Content-Type: text/txt");
header("Content-Transfer-Encoding: binary");
header('Content-length: '.filesize($file));
header('Accept-Ranges: bytes');
header('Content-Description: File Transfer');
readfile($file);
?>
我得到一個下載對話,但該文件是空的。我甚至嘗試過使用像'test'這樣的小字符串,並且仍然是空的,所以我猜測隱藏窗體的值不起作用。
感謝
你得到你的日誌文件中的任何錯誤? – pregmatch
你確定你有權限寫這個文件嗎?此外..是$ Proof variabile不是空的?如果輸出是表單中的內容,那麼需要在文件上寫入什麼? –
該變量不是空的,我用alert(證明)檢查,它包含html代碼。對於寫權限,我嘗試了下面的建議,它不起作用,甚至沒有下載對話出現。我只是試圖讓用戶下載網站的主要div作爲文本文件。這個主div是由用戶動態生成的。如果他願意,他可以稍後加載它。 –