PHP readfile()将文件内容回显到屏幕上,但不会';t下载
我正在使用的代码:PHP readfile()将文件内容回显到屏幕上,但不会';t下载,php,Php,我正在使用的代码: function DownLoading($Peter) { // if(ini_get('zlib.output_compression')) // ini_set('zlib.output_compression', 'Off') $File = ""; $Filename = ""; If ($Peter == "Farm") { $File = "TestFile.txt"; $File
function DownLoading($Peter)
{
// if(ini_get('zlib.output_compression'))
// ini_set('zlib.output_compression', 'Off')
$File = "";
$Filename = "";
If ($Peter == "Farm") {
$File = "TestFile.txt";
$FileName = $File; //"TestFile.txt";
$len = filesize($File); // Calculate File Size
if (file_exists("TestFile.txt")) {
header('Content-Description: File Transfer');
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="TestFile.txt"');
header('Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $len);
ob_clean();
$wasdownloaded = readfile("TestFile.txt");
if ($wasdownloaded === false)
echo "error";
else {
echo "no error";
Flush();
exit;
}
}
}
}
奇怪的是,如果我在wamp服务器上运行这段代码,那么它就可以正常工作(没有回音,但可以下载)
以下内容会在SDScreen上显示:这是一个测试文件!!!现在没有错误
其中“这是一个测试文件!!!NOW”是文件的内容
谁能帮帮我吗?我做了一件非常愚蠢的事,导致了同样的事情。基本上,如前所述,您必须确保尚未发送任何内容
我在
前面加了一个空格,我做了一件非常愚蠢的事情,导致了同样的事情。基本上,如前所述,您必须确保尚未发送任何内容
我在你的问题是什么?你是否尝试过标题(“内容类型:应用程序/强制下载”)代码>?另外,请记住,header
只有在您的请求中没有发送任何数据的情况下才起作用。您所说的“仅在您的请求中未发送任何数据时有效”是什么意思?作为旁注,您分配$File=“TestFile.txt”代码>,然后分配$FileName=$File代码>这似乎不是必需的。但是,尽管这两个变量包含您的文件名,您还是继续使用literalTestFile.txt
。你可能想解决这个问题。这基本上是因为我一直在尝试各种方法。这可能是原因吗?如果没有,我将在最终版本中修复它。您的问题是什么?您是否尝试过标题(“内容类型:应用程序/强制下载”)代码>?另外,请记住,header
只有在您的请求中没有发送任何数据的情况下才起作用。您所说的“仅在您的请求中未发送任何数据时有效”是什么意思?作为旁注,您分配$File=“TestFile.txt”代码>,然后分配$FileName=$File代码>这似乎不是必需的。但是,尽管这两个变量包含您的文件名,您还是继续使用literalTestFile.txt
。你可能想解决这个问题。这基本上是因为我一直在尝试各种方法。这可能是原因吗?如果没有,我会在最终版本中修复它。我仔细检查了代码,但没有任何更改。这让我发疯!我已经做了三个星期了,没有任何进展。谢谢。你让我走上了正确的道路!我以前输出过一些东西,但是通过将下载例程移动到一个单独的文件,它成功了!我仔细检查了代码,但没有任何改动。这让我发疯!我已经做了三个星期了,没有任何进展。谢谢。你让我走上了正确的道路!我以前输出过一些东西,但是通过将下载例程移动到一个单独的文件,它成功了!