php header函数下载文件实现代码

 更新时间:2016年11月25日 15:04  点击:2096
在php中header函数的使用很大,header不但可以向客户端发送原始的 HTTP 报头信息,同时还可以直接实现文件下载操作,接下来小编给大家介绍欢迎各位朋友参考。

header函数最常用的不是用于下载而是用于发送http类的

跳转

它会执行最后一个,不过是有条件的,例如:

 代码如下 复制代码

header('Location:http://www.111cn.net");
header('Location:http://www.g.cn');
header('Location:http://www.baidu.com');

这个就会跳到百度

header('Location:http://www.111cn.net');echo '烈火网;
header('Location:http://www.g.cn');
header('Location:http://www.baidu.com');

这个就会跳到google


发送状态

输出状态值到浏览器,主要用于访问权限控制

 代码如下 复制代码

<?php
header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized');
?>

比如要限制一个用户不能访问该页,则可设置状态为404,如下所示,这样浏览器就显示为即该页不存在

 代码如下 复制代码

<?php
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
?>

下载


 代码如下 复制代码

<?php
$filename = '路径+实际文件名';
//文件的类型
header('Content-type: application/pdf');
//下载显示的名字
header('Content-Disposition: attachment; filename="保存时的文件名.pdf"');
readfile("$filename");
exit();
?>

header函数进行相应的转化,

 代码如下 复制代码
header(‘Content-type: application/octet-stream’);//输出的类型,根据下面提供的MIME表,选择相应的类型
header(‘Content-Disposition: attachment; filename=”下载显示名字.rar”‘);//下载显示的名字
readfile(‘服务器上的文件名.rar’);//

要下的文件,包括路径

常用的MIME类型
.doc    application/msword
.docx   application/vnd.openxmlformats-officedocument.wordprocessingml.document
.rtf    application/rtf
.xls    application/vnd.ms-excel application/x-excel
.xlsx   application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ppt    application/vnd.ms-powerpoint
.pptx   application/vnd.openxmlformats-officedocument.presentationml.presentation
.pps   application/vnd.ms-powerpoint
.ppsx  application/vnd.openxmlformats-officedocument.presentationml.slideshow
.pdf   application/pdf
.swf   application/x-shockwave-flash
.dll   application/x-msdownload
.exe   application/octet-stream
.msi   application/octet-stream
.chm   application/octet-stream
.cab   application/octet-stream
.ocx   application/octet-stream
.rar  application/octet-stream
.tar  application/x-tar
.tgz  application/x-compressed
.zip  application/x-zip-compressed
.z    application/x-compress
.wav   audio/wav
.wma   audio/x-ms-wma
.wmv   video/x-ms-wmv
.mp3 .mp2 .mpe .mpeg .mpg   audio/mpeg
.rm   application/vnd.rn-realmedia
.mid .midi .rmi   audio/mid
.bmp   image/bmp
.gif   image/gif
.png   image/png
.tif .tiff    image/tiff
.jpe .jpeg .jpg    image/jpeg
.txt  text/plain
.xml  text/xml
.html text/html
.css  text/css
.js   text/javascript

本文章给大家总结了php目录操作一些函数与使用方法包括有:创建目录、遍历目录、读取目录、关闭目录、打开目录等等关于php目录操作函数,有需要的朋友可参考。

php创建目录文件夹函数mkdir(),其结构形式如下:

kdir(string $dirname,[int $mode])

参数$dirname为想要创建目录的名称,参数$mode可选,为整型变量,表示创建模式。

实例:

 代码如下 复制代码

 <?php
 $name="php";
 $d=mkdir($name,0777); /* 0777表示最大访问权限 */
 if($d){
  echo "创建成功";
 }
 else echo "创建不成功";
?>


php遍历目录的方法很多,这里通过实例详细介绍php遍历目录下文件的方法。

代码:

 代码如下 复制代码
 <?php
 function directory($dir){ /* 声明函数 */
  $dp=opendir($dir); /* 打开目录 */
  while($file=readdir($dp)){ /* 读取目录 */
   if($file !="." && $file !=".."){ /* 判断是否有"."或者".."文件 */
    $path=$dir. "/". $file; /* 取得目录路径 */
    if(is_dir($path)){ /* 判断是否有子目录 */
     directory($path); /* 函数递归调用 */
    }
    else echo $path. "<br>"; /* 显示文件 */
   }
  }
  closedir($dp);
 }
 
 directory("e:wp");
?>

php读取目录函数readdir()可以读取该目录下所有文件以及文件夹,其结构形式如下:


readdir($dp);

参数$dp为使用函数opendir()打开目录返回的资源对象,函数返回目录下的文件名。

实例:

 代码如下 复制代码

 <?php
 $dir=opendir("study");
 while($read=readdir($dir)){
  print($read."<br>");
 }
?>

php关闭目录函数用closedir(),其结构形式如下:

closedir($dp)

参数$dp为使用函数opendir()打开目录返回的资源对象。

实例:

 代码如下 复制代码
<?php
 $mulu="study";
 $dir=opendir($mulu);
 closedir($dir);
?>

用函数closedir()关闭目录成功并不返回值1,故不能通过if语句去判断是否关闭成功

前面介绍了php一系列的文件操作,接着笔者再介绍怎么对目录进行操作。php目录函数功能跟文件函数差不多,这里先介绍打开目录函数opendir(),其结构形式如下:


opendir(string $path)


参数$path为要打开目录的路径,函数将返回一个打开目录的句柄,用于存储当前的目录资源。打开目录之前首先要判断目录是否存在,用is_dir()函数。

实例:

 代码如下 复制代码

<?php
 if (is_dir("stufdy")){
  opendir("studfy");
  print_r("目录成功打开");
 }
 else
 echo "目录不存在";
?>

php指针函数rewind()可以将文件位置指针设到文件的开头,其结构形式如下:


 bool rewind (resource $handle );
函数返回一个布尔值,如果成功则返回true,失败则返回false。

实例:

 代码如下 复制代码


 <?php
 $f=fopen("php.txt","r");
 echo fgets($f)."<br>";  /*输出第一行*/
 echo fgets($f)."<br>";  /*输出第二行*/
 rewind($f);             /*指针返回文件头*/
 echo fgets($f);         /*输出第一行*/   
?>

在php开发时我们经常会碰到要删除数组中指定指定内容,但数组是特殊变量我们不能直接利用replace进行替换的,需要一些方法来操作,下面我来给大家介绍操作办法。

如果我们知道数组元素的名字这个就好办了

按键名来删除数组中指定数组元素

 代码如下 复制代码

$barray = array('a'=>1,'b'=>2,'wod'=>3,'c'=>4,'abc'=>5);
$del ='b';
unset($barray[$del]);//结果为


Array
(
    [a] => 1
    [wod] => 3
    [c] => 4
    [abc] => 5
)


如果有多个数组要同时删除,上面办法是解决不了,我们可以利用array_diff函数来操作

 代码如下 复制代码

$a1=array("Cat","Dog","Horse",'dff','dfdf','www');
$a2=array("dff","Horse","Dog");
$a1 = array_diff($a1,$a2);
sort($a1);
print_r($a1);

Array
(
    [0] => Cat
    [1] => dfdf
    [2] => www
)

例2

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false

 代码如下 复制代码


$array = array('1', '2', '3', '4', '5');

$del_value = 3;
unset($array[array_search($del_value , $array)]);//利用unset删除这个元素

print_r($array);

输出

array('1', '2', '4', '5');

array_filter()
调用方式:array_filter($array)
参数说明:$array 是操作的对象,我们将删除其中的空元素

实例:

 代码如下 复制代码

<?php
    $array = ('a' => "abc", 'b' => "bcd",'c' =>"cde",'d' =>"def",'e'=>"");
    array_filter($array);
    echo "<pre>";
    print_r($array);
?>

结果:

Array (

     [a] => abc

     [b] => bcd

     [c] => cde

    [d] => def

   )

上面人方法删除的都会不会重建索引的,下面我来给大家介绍一个删除数组元素并重建数组索引的方法

 代码如下 复制代码

function array_remove(&$arr,$offset){ 
    array_splice($arr,$offset,1); 


$a = array('a','b','c','d'); 
array_remove($a,2); 
print_r($a);

在php中如果要实现日期转换成时间戳我们可以直接使用strtotime函数,如果把时间戳转换成日期直接使用date()函数即可实现,下面我来给各们朋友介绍介绍。

strtotime()函数 strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。


例子

 代码如下 复制代码

<?php
echo(strtotime("now"));
echo(strtotime("3 October 2005"));
echo(strtotime("+5 hours"));
echo(strtotime("+1 week"));
echo(strtotime("+1 week 3 days 7 hours 5 seconds"));
echo(strtotime("next Monday"));
echo(strtotime("last Sunday"));
?>

输出:

1138614504
1128290400
1138632504
1139219304
1139503709
1139180400
1138489200

上面是把日期转换成时间戳了,我们也可以把如 2013-04-21这种转换成时间戳

 代码如下 复制代码

$a = date();
$mk = strtotime($a)

要求只能在白天8:00-20:00发送短信,怎么样获得到每天的这段时间区间?

 代码如下 复制代码


<?
$y=date("Y",time());
$m=date("m",time());
$d=date("d",time());
$start_time = mktime(9, 0, 0, $m, $d ,$y);
$end_time = mktime(19, 0, 0, $m, $d ,$y);

$time = time();
if($time >= $start_time && $time <= $end_time)
{
// do something....
}
?>


下面来介绍把时间戳转换成日期


date()函数,

此函数不但可以获取各种各样的时间日期之外,还可以进行日期转换呼

 代码如下 复制代码

<?
$time = time();
$date = date("Y-m-d",$time);
echo 'www.111cn.net 提示'.$date
?>

这样就输出 www.111cn.net 提示 2013-04-21 。

这种问题是你php中把错误提示开启了之后,会把你编程的一些错误给告诉你,下面我来给大家分析php Notice: Undefined index 错误提示方法,有需要的朋友可参考。

原因分析

出现这种问题一般是变量未定义造成的

 代码如下 复制代码

if($a)
{
 echo $a;
}
else
{

}

//提示:Notice: Undefined variable: a in E:/www/test.php on line 5

 代码如下 复制代码


//解决

$a=1;
if($a)
{
 echo $a;
}
else
{

}

//输出1
//在文章头部加

error_reporting(0);

if($a)
{
 echo $a;
}
else
{

}

解决方法总结

1、如果是变量未申请直接申名变量如 $a=1; 这样。
2、在文章头部加error_reporting(0);  所有错误都不提示
3、isset($_GET["page"])  或 :@$page=$_GET["page"]
4、用php.ini中error_reporting   =   E_ALL   &   ~E_NOTICE 可以关闭notice的显示,屏蔽掉此类警告好,

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04