下载2.zip无法下载

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕查理 2019-04-26 15:06:00

您好,download.php中require_once包含的文件名称应该是file.func.php。代码可以成功下载文件。

function down_file(string $filename,array $allowDownExt=['jpg','jpeg','png','gif','zip','rar','txt','html','php']){
    //检测下载文件是否存在,并且可读
    if (!is_file($filename) || !is_readable($filename)){
        return false;
    }
    //检测文件类型是否允许下载
    $ext=strtolower(pathinfo($filename,PATHINFO_EXTENSION));
    if (!in_array($ext,$allowDownExt)){
        return false;
    }
    //设置脚本最大执行时间,设置0为无时间限制 set_time_limit(0);
    //通过header()发送头信息
    //告诉浏览器输出的是字节流
    header('content-type:application/octet-stream');
    //告诉浏览器返回的文件大小是按照字节进行计算的
    header('Accept-Ranges:bytes');
    //告诉浏览器返回的文件大小
    header('Accept-Length:'.filesize($filename));
    //告诉浏览器文件作为附件处理,告诉浏览器最终下载完的文件名称
    header('Content-Disposition:attachment;filename='.basename($filename));
    //读取文件中的内容 // readfile($filename);
    //规定每次读取文件的字节数为1024字节,直接输出数据
    $filesize=filesize($filename);
    $read_buffer=1024;
    $sum_buffer=0;
    $handle=fopen($filename,'rb');
    while (!feof($handle) && $sum_buffer<$filesize){
        echo fread($handle,$read_buffer);
        $sum_buffer+=$read_buffer;
    }
    fclose($handle);
    exit;
}

同学可以查看下自己的代码是否与上述代码相同,因为无法判断同学哪些代码是注释的,上述代码是根据同学反馈的内容调整格式之后运行的。祝学习愉快!

好帮手慕查理 2019-04-26 10:41:45

您好,请同学反馈down_file函数所在文件的代码,以便运行代码查找原因。另代码请复制粘贴反馈。祝学习愉快!

  • 提问者 pxseven #1
    =====================《download.php》 <?php require_once ('filefunc11.php'); $filename=$_GET['filename']; down_file($filename); ?> ============《filefunc.php》 <?php function down_file(string $filename,array $allowDownExt=['jpg','jpeg','png','gif','zip','rar','txt','html','php']){ //检测下载文件是否存在,并且可读 if (!is_file($filename) || !is_readable($filename)){ return false; } //检测文件类型是否允许下载 $ext=strtolower(pathinfo($filename,PATHINFO_EXTENSION)); if (!in_array($ext,$allowDownExt)){ return false; } //设置脚本最大执行时间,设置0为无时间限制 set_time_limit(0); //通过header()发送头信息 //告诉浏览器输出的是字节流 header('content-type:application/octet-stream'); //告诉浏览器返回的文件大小是按照字节进行计算的 header('Accept-Ranges:bytes'); //告诉浏览器返回的文件大小 header('Accept-Length:'.filesize($filename)); //告诉浏览器文件作为附件处理,告诉浏览器最终下载完的文件名称 header('Content-Disposition:attachment;filename='.basename($filename)); //读取文件中的内容 // readfile($filename); //规定每次读取文件的字节数为1024字节,直接输出数据 $filesize=filesize($filename); $read_buffer=1024; $sum_buffer=0; $handle=fopen($filename,'rb'); while (!feof($handle) && $sum_buffer<$filesize){ echo fread($handle,$read_buffer); $sum_buffer+=$read_buffer; } fclose($handle); exit; }
    2019-04-26 13:10:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师