Home >php教程 >php手册 >php文件下载(可限制下载速度)实现代码

php文件下载(可限制下载速度)实现代码

WBOY
WBOYOriginal
2016-06-13 11:25:01811browse

在php中文件下载会利用到header fopen fread三个主要函数,同时还有一些辅助函数如判断文件存在file_exists is_file等函数,下面我们来看一款文件下载可以限制下载速度实例

在php教程中文件下载会利用到header fopen fread三个主要函数,同时还有一些辅助函数如判断文件存在file_exists is_file等函数,下面我们来看一款文件下载可以限制下载速度实例

*/
$file = "test.mp3"; // file to be send to the client
$speed = 8.5; // 8,5 kb/s download rate limit
if(file_exists($file) && is_file($file)) {
   header("cache-control: private");
   header("content-type: application/octet-stream");
   header("content-length: ".filesize($file));
   header("content-disposition: filename=$file" . "%20");
   flush();
   $fd = fopen($file, "r");
    while(!feof($fd)) {
          echo fread($fd, round($speed*1024));
       flush();
       sleep(1);
    }
   fclose ($fd);
}

/*
flush
flush函数 刷新php程序的缓冲 实现echo动态输出
本函数实现的结果是页面不断地显示echo输出 的数据
for ($i=10; $i>0; $i--)
{
echo $i.'
';
ob_flush();
flush();
sleep(1);
}
ob_end_flush();

sleep
sleep() 函数延迟代码执行若干秒。
header
header() 函数向客户端发送原始的 http 报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 php 4 以及更高的版本中,您可以使用输出缓存来解决此问题):


filesize 获取文件大小
fread 读取由fopen打开的文件内容


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn