• 技术文章 >php教程 >php手册

    php实现文件下载(支持中文文名)

    2016-06-13 10:18:26原创389
    复制代码 代码如下:


    /*======================================================
    $FileName 为文件名称,必传
    $FilePath 为文件路径.选填,可以为相对路径或者绝对路径
    路径只能由英文跟数据组成,不能带有中文
    ======================================================*/

    header("Content-type: text/html;charset=utf-8");
    if(strlen($FileName)<=3){echo "下载失败:你所以下载的文件信息有误";return;}
    $FileName=iconv("utf-8","gb2312",$FileName);//进行文件名格式转换,以防中文乱码
    //开始判断路径
    if(!is_null($FilePath)&&strlen($FilePath)>1){

    if(substr($FilePath,0,1)=='//m.sbmmt.com/m/'){//判断是否为绝对路径

    $FilePath=$_SERVER['DOCUMENT_ROOT'].$FilePath;

    }
    if(substr($FilePath,-1)!="//m.sbmmt.com/m/"){//检查最后是否为 / 结尾

    $FilePath=$FilePath.'//m.sbmmt.com/m/';

    }
    if(is_numeric(strpos($FilePath,":\"))){//检查是否为绝对路径

    $FilePath=str_replace("//m.sbmmt.com/m/","\",$FilePath);

    }
    }elseif(strlen($FilePath)==1&&$FilePath!="//m.sbmmt.com/m/"){

    $FilePath=$FilePath."//m.sbmmt.com/m/";

    }else{

    $FilePath="";

    }
    if(!file_exists($FilePath.$FileName)){

    echo"下载失败:所要下载的文件未找到";return;

    }
    /*================================================
    发送下载相关的头部信息
    =================================================*/

    header("Content-type: application/octet-stream");

    header("Accept-Ranges: bytes");//按照字节大小返回

    header("Accept-Length: $FileSize");//返回文件大小

    header("Content-Disposition: attachment; filename=".$FileName);//这里客户端的弹出对话框,对应的文件名

    /*================================================
    开始下载相关
    =================================================*/
    $FileSize=filesize($FilePath.$FileName);

    $File=fopen($FilePath.$FileName,"r");//打开文件

    $FileBuff=512;

    while($FileSize>=0){

    $FileSize-=$FileBuff;

    echo fread($File,$FileBuff);

    }

    fclose($File);
    }
    ?>

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP 提取图片img标记中的任意属性的简单实例 下一篇:php文件上传的例子及参数详解
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP单件模式和命令链模式的基础知识• PHP+TEXT留言本(三)• Smarty在模板文件中的一些应用• 完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题• Linux下CoreSeek及PHP扩展模块的安装
    1/1

    PHP中文网