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

// 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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,760评论 0 11
  • PHP 学习目录 ├─PHP视频教程 1 LAMP网站构建 │ ├─PHP教程 1.1.1 新版视频形式介绍│ ...
    曹渊说创业阅读 16,175评论 29 417
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_阅读 1,853评论 0 3
  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,822评论 3 64
  • 感冒了,难受。在吹头发的时候看着镜中的自己才而立之年竟发现白头发多了不少。虽然从少年起,自己已有白发。但每次看的时...
    争做一棵悬崖边的树阅读 278评论 1 0