首页 > 语言 > PHP > 正文

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

2024-09-04 11:44:52
字体:
来源:转载
供稿:网友

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

例1,代码如下:

  1. function download($file_url,$new_name=''){ 
  2.  if(!isset($file_url) || trim($file_url)==''){ 
  3.   return '500'
  4.  } 
  5.  if(!file_exists($file_url)) { //检查文件是否存在 
  6.   return '404'
  7.  } 
  8.  $file_name=basename($file_url); 
  9.  $file_type=explode('.',$file_url); 
  10.  $file_type=$file_type[count($file_type)-1]; 
  11.  $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type
  12.  $file_type=fopen($file_url,'r'); //打开文件 
  13.  //输入文件标签 
  14.  header("Content-type: application/octet-stream"); 
  15.  header("Accept-Ranges: bytes"); 
  16.  header("Accept-Length: ".filesize($file_url)); 
  17.  header("Content-Disposition: attachment; filename=".$file_name); 
  18.  //输出文件内容 
  19.  echo fread($file_type,filesize($file_url)); 
  20.  fclose($file_type); 

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

  1. <? 
  2. ifemptyempty($_GET['FileName'])|| emptyempty($_GET['FileDir'])|| emptyempty($_GET['FileId'])){ 
  3.     echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'exit(); 
  4. $file_name=$_GET['FileName']; 
  5. $file_dir=$_GET['FileDir']; 
  6. $FileId=$_GET['FileId']; 
  7. $file_dir = $file_dir."/"
  8. if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在   
  9.   echo   "文件找不到";   
  10.   exit;     
  11.   }   else   {   
  12. $file = fopen($file_dir . $file_name,"r"); // 打开文件 
  13. // 输入文件标签 
  14. Header("Content-type: application/octet-stream"); 
  15. Header("Accept-Ranges: bytes"); 
  16. Header("Accept-Length: ".filesize($file_dir . $file_name)); 
  17. Header("Content-Disposition: attachment; filename=" . $file_name); 
  18. // 输出文件内容 
  19. echo fread($file,filesize($file_dir . $file_name)); 
  20. fclose($file); 
  21. exit(); 
  22. ?> 

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

  1. <?php    
  2. $file = get_file_address();// 文件的真实地址(支持url,不过不建议用url)    
  3.    
  4. if (file_exists($file)) {    
  5.     header('Content-Description: File Transfer');    
  6.     header('Content-Type: application/octet-stream');    
  7.     header('Content-Disposition: attachment; filename='.basename($file));    
  8.     header('Content-Transfer-Encoding: binary');    
  9.     header('Expires: 0');    
  10.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');    
  11.     header('Pragma: public');    
  12.     header('Content-Length: ' . filesize($file));    
  13.     ob_clean();    
  14.     flush();    
  15.     readfile($file);    
  16.     exit;    
  17. }    
  18. ?> 

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表