我正在本地主机上创建一个网站,让人们下载一些.rar文件。
在我的索引中,我创建了一些这样的标签:
$filename = "Test001.rar";
<a href="download.php?file='.$filename.'">'.$filename.'</a>';
这只是一个单独文件的例子,但在我的php文件"download.php"中,当我想下载.rar文件时遇到了问题
这是下载.php
<?php
echo "Welcome to Knowledge!";
if (isset($_GET['file']) && basename($_GET['file']) == $_GET['file'])
{
$file = $_GET["file"];
$path = 'C:xampphtdocsTestSite'."\".$file;
}
$err = $path.'Sorry, the file you are requesting doesnt exist.';
if (file_exists($path) && is_readable($path))
{
//get the file size and send the http headers
$size = filesize($path);
header('Content-Type: application/x-rar-compressed, application/octet-stream');
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename='.$file);
header('Content-Transfer-Encoding: binary');
readfile($filename);
}
?>
它以正确的方式打开流,但我得到的文件大小大约是200字节,而不是大约200MB的全长。
如何解决此问题?
删除echo语句,头之前不应该有任何输出。将readfile($filename)更改为readfile($file)