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/');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值