php教程

PHP下载隐藏文件真实地址路径方法

php教程 51源码 2022-12-29 人阅读

方法一,采用fread()函数切片下载,适合大流量下载。可以限速下载,但容易导致内存溢出,下载失败。

public function fileUrl($url)
{
    $file = 'uploads/files/'.$url;
    if (file_exists(\dirname(__FILE__).$file)) {
        return $this->error("文件不存在");
    }
    // 新文件名
    $filename = explode('.', $file);
    $filename = array_pop($filename);
    $filename = time().'.'.$filename;
    //下载文件
    $filesize = filesize($file) + 1000;
    header('Content-Description:File Transfer');
    header("Content-Type:application/octet-stream");
    header('Content-Transfer-Encoding:binary');
    header("Accept-Ranges: bytes");
    header('Expires:0');
    header('Cache-Control:must-revalidate');
    header('Pragma:public');
    header("Content-Length:".$filesize);
    header("Content-Disposition:attachment;filename=".$filename);
    $fp = fopen($file, "rb"); 
    fseek($fp,0); 
    while (!feof($fp)) { 
        set_time_limit(0); 
        print (fread($fp, 1024 * 8)); 
        flush(); 
        ob_flush(); 
    } 
    fclose($fp); 
    exit ();
}

方法二,不限速不切片无限制的形势下载,适合小文件下载。

public function fileUrl2($url)
{
    $file = 'uploads/files/'.$url;
    if (file_exists(\dirname(__FILE__).$file)) {
        return $this->error("文件不存在");
    }
    // 新文件名
    $filename = explode('.', $file);
    $filename = array_pop($filename);
    $filename = time().'.'.$filename;
    
    header('Content-type:application/octet-stream');
    header('Content-Disposition:attachment;filename='.$filename);
    header('Content-Length:'.filesize($file));
    readfile($file);
}


上一篇:PHP版贪吃蛇小游戏源代码 下一篇:round()四舍五入php函数介绍 栏目分类

帝国CMS教程

织梦cms教程

discuz教程

ecshop教程

phpcms教程

wordpress教程

苹果cms教程

php教程

数据库教程

微信小程序教程

python教程

css教程

js教程

视频教程

电子书

热门推荐
版权声明:文章搜集于网络,如有侵权请联系本站,转载请说明出处:https://www.51yma.cn/jiaocheng/php/996.html
文章来源:
标签