【发布时间】:2015-09-06 23:31:22
【问题描述】:
我正在我的本地主机上创建一个网站,应该可以让人们下载一些 .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:\xampp\htdocs\TestSite'."\\".$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 的全长。
我该如何解决这个问题?
【问题讨论】:
-
如果你想下载文件会发生什么?你还有 200 字节的不完整文件吗?
-
不,它会下载一个 200 字节大小的 rar 文件,或者类似的东西
-
在文本编辑器中打开文件,看看它是否真的是带有错误信息的文本
-
它说“允许的内存大小为 134217728 字节已用尽(试图分配 175652864 字节)”,那么我怎样才能分配超过 13... 字节?
-
无论你做什么,都不要不要在有人建议之前将
ini_set('memory_limit', '-1');设置为快速修复。