美文网首页
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