为什么不下载文件 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,将它修改正确即可正确下载,如果解决了您的问题,请采纳,祝学习愉快~
相似问题