61、发送header文件头信息实现文件下载

阅读() @2019-03-17 16:05:09

在php文件中,如果不指定header头部信息,那么浏览器默认以text/html超文本格式来解析此文档,如果想打开一个非文本类型的文件,例如图片、视频、pdf文件等,如果不指定header头部信息,那么浏览器就会输出很多的乱码。

例如:

echo readfile('a.jpg');//乱码

如果指定头部信息呢?

header('Content-type:image/jpg');
$file = fopen('a.jpg','r');

echo fread($file,filesize('a.jpg'));

这样就不会输出乱码,而是在浏览器中在线预览打开这张图片。

所以图片、视频、word文档等不同的文档类型,header头部信息都不一样。

通过header头部信息实现下载功能的时候,可以点击一个a标签连接,然后链接参数是file,在另外一个页面通过读取get全局变量中的file值来打开或下载文档。

$file = $_GET['file'];
if(file_exists($file)){
    header("Content-type:application/octet-stream");
    $fileName = basename($file);
    header("Content-Disposition:attachment;filename={$fileName}");
    header("Accept-ranges:bytes");
    header("Accept-length:".filesize($file));
    readfile($file);
}else{
	echo "文件错误!";
}

本节完!

微信二维码
锐壳主机