• 技术文章 >后端开发 >php教程

    不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题

    2016-06-13 10:15:07原创523

    不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

    function down_file($file_name,$file_sub_dir){



    //为防止乱码使用函数iconv
    $file_name=iconv("utf-8","gb2312",$file_name);

    //绝对路劲
    $file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;

    //打开文件
    if(!file_exists($file_path)){
    echo "文件不存在";
    return;

    }
    $fp=fopen($file_path,"r");

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


    //限制下载大小10M
    if($file_size>10*1021*1024){

    echo "";
    return;

    }
    //返回的文件属性 这个header告诉浏览器要下载
    header("Content-type:application/octet-stream");
    //按照字节大小返回
    header("Accept-Ranges:bytes");
    //返回文件大
    header("Accept-Length:$file_size");
    //这里客户端弹出对话框,对应文件名
    header("Content-Dispositon:attachment; filename=".$file_name);

    //向客户端发送数据
    $buffer=1024;
    //为了下载安全,我们最好做一个文件自己诶读取计数器
    $file_count=0;
    //这句话用于判断文件是否结束
    while(!feof($fp) && ($file_size-$file_count>0) ){

    $file_data=fread($fp,$buffer);
    //统计读了多少个字节
    $file_count+=$buffer;
    //把部分数据返回给浏览器
    echo $file_data;


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





    }






    ?>

    ------解决方案--------------------
    仔细看了一下才发现
    header("Content-Disposition: attachment; filename=". $file_name);
    少了个i

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:file nbsp quot header name
    上一篇:关于一个preg_replace 正则表达式 替换的有关问题 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文详解PHP用流方式实现下载文件(附代码示例)• PHP反序列化入门总结(小白必看)• PHP原生类的总结分享• 聊聊PHP escapeshellarg函数使用的中文问题• 分享PHP函数使用小工具(附代码示例)
    1/1

    PHP中文网