我正在尝试制作像ftp这样的东西。我有一个自制服务器,在wamp上设置了应用程序。 而且我不想将我的所有文件保存在wamp文件夹中,因此我也从该应用程序访问本地文件。
已经阅读了很多工作人员,我不能这样做,没有浏览器让我做这样的事情。但我以某种方式管理它。
这是我用来下载文件的代码:
function getFile($name,$path) {
if(file_exists($path.$name)) {
$name = urldecode($name);
$fsize = filesize($path.$name);
header("Content-disposition: attachment; filename=\"".$name."\"");
header("Content-type: application/force-download");
header("Content-length: ".$fsize);
echo file_get_contents($path.$name);
}
它适用于小文件,无论它们有什么扩展名,但我还必须下载超过200Mb的一些.exe文件。
我已经在php.ini中设置了memory_limit,这是我遇到的第一个麻烦的原因,但现在我得到了错误:324。
任何想法如何克服它?
答案 0 :(得分:0)
file_get_contents在内存中的第一个读取文件中然后返回它。 对于200MB的文件大小,一个脚本需要超过200MB的内存。
为了修复它,你应该按块读取文件并输出。
例如
$fp = fopen($path.$name, "rb");
if ($fp) {
while(!feof($fp)) {
$str = fread($fp, 1024);
echo $str;
}
fclose($fp);
}