我发现 Headers 是一场噩梦,让我头晕目眩,我有一个用户下载的文件,它运行良好。但是,我希望在屏幕上回显已发送 xx 文件;但是ofc这个回声只是放在发送的文件中。
完整下载代码如下:
function download()
{
$orderNo = $_POST['orderNo'];
$lines = file('F:/xamptest/htdocs/UniProject/upload/Amazon output.txt');
$lineCount = count($lines);
if($orderNo>0&&$orderNo<=$lineCount)
{
$lineEx = explode("\t", $lines[($orderNo-1)]);
$file = fopen('Order.txt', 'w');
fwrite($file, $lineEx[8].PHP_EOL .$lineEx[17].PHP_EOL .$lineEx[18].PHP_EOL .$lineEx[19].PHP_EOL .$lineEx[20].PHP_EOL .$lineEx[21].PHP_EOL .$lineEx[22].PHP_EOL .$lineEx[23].PHP_EOL);
fclose($file);
$file = 'Order.txt';
ob_end_clean();
header("Cache-Control: private");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
readfile($file);
echo "Current order, number: ".$orderNo."<br> Has been downloaded";
}
else
{
echo "Please enter a valid Order Number between 1 and ".$lineCount;
}
}
我似乎无法找到如何在不使用 exit(); 的情况下停止标题。这仍然意味着它不会显示回声,并且不再使用 ob_end_clean(); 以任何其他方式导致发送的文件为空。我能想到的唯一另一件事是在它自己的函数中有回显,但是当它同时运行时,标题仍然会将它放在文件中。
非常感谢您的帮助 - 汤姆。