这是我用来向 force_dl.php 发送 random_num 的 jQuery 代码,其中 random_num 的值是 977926 ...我的最终目标是强制下载 data977926.data 而不是在新窗口中打开。
$.post( "../scripts/force_dl.php",{
random_num: random_num
},
function( data ) {
alert( data );
var data_file = document.getElementById("data_file");
data_file.href = "../scripts/force_dl.php";
});
这是正在修改的 HTML 代码
<a id="data_file">Download data file</a>
当我在 force_dl.php 中有以下内容时,
<?php $file_name = "data" . $_POST['random_num'] . ".data";
echo "$file_name"; ?>
我在警报中看到文件名,
data977926.data
如果我在 force_dl.php 中运行以下命令
header("Content-disposition: attachment; filename=data257667.data");
header("Content-type: text/plain");
readfile("../queries/gnuplot_tmp_files/data257667.data");
并单击 ID 为 data_file 的 HTML 链接,我被迫根据需要下载数据文本文件。当我运行以下命令时,问题就来了。当我单击相同的 data_file 链接时,我下载了一个名为 data.data 的文件!
$file_name = "data" . $_POST['random_num'] . ".data";
header("Content-disposition: attachment; filename=$file_name");
header("Content-type: text/plain");
readfile("../queries/gnuplot_tmp_files/$file_name");
这是 data.data 文件中的内容,
<br />
<b>Notice</b>: Undefined index: random_num in <b>/var/www/html/msdb/scripts/force_dl.php</b> on line <b>2</b><br />
<br />
<b>Warning</b>: readfile(../queries/gnuplot_tmp_files/data.data): failed to open stream: No such file or directory in <b>/var/www/html/msdb/scripts/force_dl.php</b> on line <b>6</b><br />
当我可以回显 $_POST['random_num'] 时,为什么索引 random_num 未定义?为什么下载的文件名为data.data而不是data977926.data?为什么我回显 $_POST['random_num'] 时会看到 data977926.data,但得到的结果与将 $_POST['random_num'] 插入标头和 readfile 函数时的结果与输入 data977926.data 时不同?提前致谢。