我正在尝试强制下载一个带有名为“证明”的 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”这样的较小字符串,但仍然是空的,所以我猜测隐藏表单的值不起作用。
谢谢