为什么不下载文件 get发送的数据下载的不是文件,下载了链接的网页

来源:2-11 文件下载函数封装

梅三喵

2017-12-24 15:06:31

<!DOCTYPE html>

<html>

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>文件下载</title>

</head>

<body>

  <a href="test1.zip">下载1</a>

  <br>

  <a href="down.php?filename=test1.zip">下载2</a>

</body>

</html>



<?php

  require_once '5.php';

  $filename = $_GET['filename'];

  down_load($filename);


<?php

  header('content-type:text/html;charset:utf-8');

  //下载函数的封装


  //

  function down_load(string $filename,array $type=array('zip','jpeg','png','jpg','txt')){

    //判断文件是否存在

    if(!is_file($filename)||!is_readable($filename)){

      return false;

    }

    //判断文件类型是否存在

    $ext=strtolower(pathinfo($filename,PATHINFO_EXTENSION));

    if(!in_array($ext,$type)){

      return false;

    }

    //通过header函数发送头信息

    //告诉浏览器输出的类型是字节流

    header('content-type:application/octet-stream');


    //告诉浏览器返回的文件大小是按照字节计算的

    header('Accept-Ranges:bytes');


    //告诉浏览器返回的文件大小

    header('Accept-Length:'.filesize($filename));


    //告诉浏览器文件作为附件处理,并且告诉浏览器下载玩的文件名称

    header('Content-Dispositon:attachment;filename='.basename($filename));


    //读取文件中的内容

    readfile($filename);


    exit;


  }


 ?>

为啥把down.php网页下载下来了,而不是test1.txt

写回答

1回答

imooc_澈

2017-12-25

您好,您的header('Content-Dispositon:attachment;filename='.basename($filename));中的Disposition拼写错误,少了一个i,将它修改正确即可正确下载,如果解决了您的问题,请采纳,祝学习愉快~

0

0 学习 · 2569 问题

查看课程