php文件下载

<?php
/**
 * 文件下载
 * @param  string $file_name    文件名
 * @param  string $file_sub_dir 文件子路径
 * @return void               
 */
function down_file($file_name,$file_sub_dir){

    //1、将文件名转码
    $file_name = iconv('utf-8', 'gb2312', $file_name);

    //2、拼接文件绝对路径
    $file_path = $_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;

    //3、判断文件是否存在
    if(!file_exists($file_path)){
        echo '文件不存在';
        return ;
    }

    //4、打开文件
    $fp = fopen($file_path, 'r');

    //5、获取文件大小
    $file_size = filesize($file_path);

    //6、设置响应头
    header('Content-Type: application/octet-stream');
    header('Accept-Ranges: bytes');
    header('Content-Length: '.$file_size);
    header('Content-Disposition: attachment; filename='.$file_name);

    //7、返回数据
    $buffer = 1024;//定义每次写给客户端的大小,字节为单位
    while(!feof($fp)){
        $file_data = fread($fp, $buffer);
        echo $file_data;
    }

    //8、关闭文件
    fclose($fp);
}


//测试
down_file('01-nginx介绍及编译安装.wmv','/test/file/');
posted @ 2017-06-05 20:50  SEC.VIP_网络安全服务  阅读(80)  评论(0)    收藏  举报