PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    php如何解决下载的文件提示被破坏不能打开

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:这个问题只针对用header()实现文件下载,最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开...
    这个问题只针对用header()实现文件下载,最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,笔者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数,经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾。综合以上做了些改正,以下代码是休整之后的代码,经测试问题解决。

     
    复制代码 代码如下:
    function download($file_url,$new_name=''){
    if(!isset($file_url)||trim($file_url)==''){
      return '500';
    }
    if(!file_exists($file_url)){//检查文件是否存在
      return '404';
    }
    $file_name=basename($file_url);
    $file_type=explode('.',$file_url);
    $file_type=$file_type[count($file_type)-1];
    $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
    //输入文件标签phpernote
    header("Content-type: application/octet-stream");
    header("Accept-Ranges: bytes");
    header("Accept-Length: ".filesize($file_url));
    header("Content-Disposition: attachment; filename=".$file_name);
    //输出文件内容
    @readfile($file_type);
    }
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-614-1.html
    相关热词搜索: 图片下载 文件下载