美文网首页
PHP下载tar文件,却下载了调用下载函数的php文件

PHP下载tar文件,却下载了调用下载函数的php文件

作者: 烟影很美 | 来源:发表于2017-11-15 15:31 被阅读14次
    // download.php
    <?php
    require_once 'file.func.php';
    $filename = $_GET['filename'];
    down_file($filename);
    
    // file.func.php中的下载函数
    function down_file(string $filename, $allowDownExt=['png','jpg','jpeg','gif','txt','html','tar','zip']) {
      // 检测下载文件是否存在并可读
      if (!is_file($filename)) {
        return false;
      }
      // 检测文件类型是否允许下载
      $ext = strtolower(pathinfo($filename,PATHINFO_EXTENSION));
      if (!in_array($ext,$allowDownExt)) {
        return false;
      }
      // 通过heander()发送头信息
      // 告诉浏览器输出的是字节流
      header('content-type:application/octet-stream');
      // 告诉浏览器返回的文件大小是按照字节计算的
      header('Accept-Ranges:bytes');
      // 告诉浏览器返回的文件大小
      header('Accept-Length:'.filesize($filename));
      // 告诉浏览器如何处理文件(这里是作为附件处理), 告诉浏览器最终下载完的文件名称
      header('Content-Disposition:attachment:filename=Daniel_'.basename($filename));
      // 读取文件中的内容
      readfile($filename);
      exit;
    }
    

    错误出现在

    Disposition:attachment:filename=Daniel_'.basename($filename));
    

    attachment 后面应该是分号而不是冒号, 因为这个错误下载的文件名是'download.php', 内容是tar文件里面内容的字节流形式

    真是新手错误TAT

    相关文章

      网友评论

          本文标题:PHP下载tar文件,却下载了调用下载函数的php文件

          本文链接:https://www.haomeiwen.com/subject/vzthvxtx.html