header()函数的作用是向浏览器发送正确的HTTP报头,报头指定了网页内容的类型,页面的属性等信息。
1)页面跳转。如果header()函数的参数为“Location:xxx”,那么页面就会自动跳转到“xxx”指向的URL地址。
2)指定网页内容。例如,同样的一个XML格式的文件,如果header()函数的参数指定为“Content-type:application/xml”,那么浏览器就会将其按照XML文件格式来解析。但如果是“Content-type:text/xml”,那么浏览器将会将其看做文本解析。
3)文件下载。header()函数结合readfile()函数可以下载将要浏览的文件,例如,下载html目录下的1.txt文件可以使用以下的代码:
<?php
$textname="html/1.txt"; //源文件
$newname="index.txt"; //新文件名
header("Content-type:text/plain"); //设置下载的文件类型
header("Content-Length:".filesize($textname)); //设置下载文件的大小
header("Content-Disposition:attachment;filename=$newname"); //设置下载文件的文件名
readfile($textname); //读取文件
拓展:
app的下载代码实现
<meta charset="utf8">
<?php
$textname="./mafengwo_ziyouxing.apk"; //源文件
$newname="智尚荟"; //新文件名
header("Content-type:application/vnd.android.package-archive"); //设置下载的文件类型为apk
header("Content-Length:".filesize($textname)); //设置下载文件的大小
header("Content-Disposition:attachment;filename=$newname"); //设置下载文件的文件名
readfile($textname); //读取文件
下载APP:
TP方式实现下载
public function down()
{
$info=Db::name('config_appset')
->order('id','desc')
->select();
$textname=$_SERVER['DOCUMENT_ROOT'].$info[3]['url'];
$newname="智尚荟-".$info[3]['version'];
header("Content-type:application/vnd.android.package-archive");
header("Content-Length:".filesize($textname));
header("Content-Disposition:attachment;filename=$newname");
readfile($textname);
exit;
}
下载PDF:
//TP方式实现下载
public function down()
{
$id=$request->param('id');
$url=Db::name('business')->where('id',$id)->value('pdf');
$filename=ROOT_PATH.'public'.DS.'uploads'.DS.$url;
// header("Location:$textname");
header('Content-Type: application-x/force-download');
// header('Content-Disposition: attachment; filename="' . basename($filename) .'"');
header('Content-Disposition: attachment; filename=自画像报告.pdf'); //文件名称记得带文件后缀
header('Content-length: ' . filesize($filename));
// for IE6
if (false === strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) {
header('Cache-Control: no-cache, must-revalidate');
}
header('Pragma: no-cache');
// read file content and output
return readfile($filename);;
}
关于Content-type:参数的参考资料