加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php运用header实现文件下载代码

发布时间:2023-06-09 13:00:58 所属栏目:PHP教程 来源:
导读:在php中如果要实现下载如图片文件,php文件,html文件这些文件我们如果在网站上点击都是直接打开了,如果要实现下载我们可以利用php header函数来操作.例1,代码如下:function download($file_url,$new_name='')

在php中如果要实现下载如图片文件,php文件,html文件这些文件我们如果在网站上点击都是直接打开了,如果要实现下载我们可以利用php header函数来操作.

例1,代码如下:

function download($file_url,$new_name=''){ 

 if(!isset($file_url) || trim($file_url)==''){ 

  return '500'; 

 } 

 if(!file_exists($file_url)) { //检查文件是否存在 

  return '404'; 

 } 

 $file_name=basename($file_url); 

 $file_type=explode('.',$file_url); 

 $file_type=$file_type[count($file_type)-1]; 

 $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type; 

 $file_type=fopen($file_url,'r'); //打开文件 

 //输入文件标签 

 header("Content-type: application/octet-stream"); 

 header("Accept-Ranges: bytes"); 

 header("Accept-Length: ".filesize($file_url)); 

 header("Content-Disposition: attachment; filename=".$file_name); 

 //输出文件内容 

 echo fread($file_type,filesize($file_url)); 

 fclose($file_type); 

例2,以下php代码可以解决:

<? 

if( emptyempty($_GET['FileName'])|| emptyempty($_GET['FileDir'])|| emptyempty($_GET['FileId'])){ 

    echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'; exit(); 

$file_name=$_GET['FileName']; 

$file_dir=$_GET['FileDir']; 

$FileId=$_GET['FileId']; 

$file_dir = $file_dir."/"; 

if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在   

  echo   "文件找不到";   

  exit;     

  }   else   {   

$file = fopen($file_dir . $file_name,"r"); // 打开文件 

// 输入文件标签 

Header("Content-type: application/octet-stream"); 

Header("Accept-Ranges: bytes"); 

Header("Accept-Length: ".filesize($file_dir . $file_name)); 

Header("Content-Disposition: attachment; filename=" . $file_name); 

// 输出文件内容 

echo fread($file,filesize($file_dir . $file_name)); 

fclose($file); 

exit(); 

?> 

直接下载文件,代码如下:

<?php    

$file = get_file_address();// 文件的真实地址(支持url,不过不建议用url)    

if (file_exists($file)) {    

    header('Content-Description: File Transfer');    

    header('Content-Type: application/octet-stream');    

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

    header('Content-Transfer-Encoding: binary');    

    header('Expires: 0');    

    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');    

    header('Pragma: public');    

    header('Content-Length: ' . filesize($file));    

    ob_clean();    

    flush();    

    readfile($file);    

    exit;    

}    

?> 

小提示,header函数不只是可以实现文件下载,他还有很多的功能,如发送404,301等等状态信息都是可以的.

注意:在使用header之前我们必须在header之前没有任何输出,否则就会报错.

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!