PHP文件下载代码

来源:互联网 发布:基于密度聚类算法 编辑:程序博客网 时间:2024/05/17 08:42
[php] view plaincopyprint?
  1. public function downloadfile(){ //下载FTP中的一个文件 (已测试成功)   
  2.  $file_name = "root.php";  
  3.  $file_dir = $this->webdir;  
  4.  if (!file_exists($file_dir."/".$file_name)){ //检查文件是否存在  
  5.  return false;  
  6.  exit;  
  7.  }else{  
  8.  $file = fopen($file_dir."/".$file_name,"r"); // 打开文件  
  9.  // 输入文件标签   
  10.  header('Content-Encoding: none');  
  11.  header("Content-type: application/octet-stream");  
  12.  header("Accept-Ranges: bytes");  
  13.  header("Accept-Length: ".filesize($file_dir."/".$file_name));  
  14.  header( 'Content-Transfer-Encoding: binary' );  
  15.  header("Content-Disposition: attachment; filename=" .$file_name); //以真实文件名提供给浏览器下载   
  16.  header('Pragma: no-cache');  
  17.  header('Expires: 0');  
  18.  //输出文件内容   
  19.  echo fread($file,filesize($file_dir."/".$file_name));  
  20.  fclose($file);  
  21.  exit;  
  22.  }  
  23.  }   
  24.   
  25. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  26.   
  27. 你一定会笑我"下载文件"如此简单都值得说?当然并不是想象那么简单。例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 "Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商 务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。程序如下:   
  28.   
  29. $file_name = "info_check.exe";  
  30. $file_dir = "/public/www/download/";  
  31. if (!file_exists($file_dir . $file_name)) { //检查文件是否存在  
  32. echo "文件找不到";  
  33. exit;   
  34. else {  
  35. $file = fopen($file_dir . $file_name,"r"); // 打开文件   
  36. // 输入文件标签   
  37. Header("Content-type: application/octet-stream");  
  38. Header("Accept-Ranges: bytes");  
  39. Header("Accept-Length: ".filesize($file_dir . $file_name));  
  40. Header("Content-Disposition: attachment; filename=" . $file_name);  
  41. // 输出文件内容   
  42. echo fread($file,filesize($file_dir . $file_name));  
  43. fclose($file);  
  44. exit;}   
  45.   
  46. 而如果文件路径是"http" 或者 "ftp" 网址的话,则源代码会有少许改变,程序如下:   
  47.   
  48. $file_name = "info_check.exe";  
  49. $file_dir = "http://www.easycn.net/";   
  50. $file = @ fopen($file_dir . $file_name,"r");   
  51. if (!$file) {  
  52. echo "文件找不到";  
  53. else {  
  54. Header("Content-type: application/octet-stream");  
  55. Header("Content-Disposition: attachment; filename=" . $file_name);  
  56. while (!feof ($file)) {  
  57. echo fread($file,50000);  
  58. }  
  59. fclose ($file);  
  60. }   
  61.   
  62. 这样就可以用PHP直接输出文件了。   
  63.   
  64. <?   
  65. $file_name = "0209.jpg";   
  66. $file_dir = "./download/";   
  67. if (!file_exists($file_dir . $file_name)) { //检查文件是否存在   
  68. echo "文件找不到";   
  69. exit;   
  70. else {   
  71. $file = fopen($file_dir . $file_name,"r"); // 打开文件   
  72. // 输入文件标签    
  73. Header("Content-type: application/octet-stream");   
  74. Header("Accept-Ranges: bytes");   
  75. Header("Accept-Length: ".filesize($file_dir . $file_name));   
  76. Header("Content-Disposition: attachment; filename=" . $file_name);   
  77. // 输出文件内容    
  78. echo fread($file,filesize($file_dir . $file_name));   
  79. fclose($file);   
  80. exit;}   
  81.   
  82. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  83.   
  84. <?php  
  85. if (isset($file_name)){  
  86. $file_dir = DIR_FS_PRODUCTS."audit/speak//";  
  87. if (!file_exists($file_dir . $file_name)) { //检查文件是否存在  
  88.  zen_jump_page("你下载的文件没找到!请联系管理员!");  
  89. else {  
  90.  //echo $add_log_tsql;   
  91.  $file = fopen($file_dir . $file_name,"r"); // 打开文件   
  92.  // 输入文件标签   
  93.  Header("Content-type: application/octet-stream");  
  94.  Header("Accept-Ranges: bytes");  
  95.  Header("Accept-Length: ".filesize($file_dir . $file_name));  
  96.  Header("Content-Disposition: attachment; filename=" . $file_name);  
  97.  // 输出文件内容   
  98.  echo fread($file,filesize($file_dir . $file_name));  
  99.  if(fclose($file)){  
  100.  $c_ipaddr=$_SERVER['REMOTE_ADDR'];  
  101.  $add_log_tsql="insert into sp_fdownload_log (dl_dfilename,dl_duser,dl_pr_seq,dl_dtype,dl_module,dl_dipaddr,dl_createtime) values ('".$file_name."','".$park_userid."',".$prod_seq.",".$dtype.",'".$park_support."','".$c_ipaddr."',now())";  
  102.  $add_log=$db->execute($add_log_tsql);  
  103.  $end_download_tsql="update sp_fdownload set fd_used_times=fd_used_times+1 where fd_id=".$fd_id." and fd_userid=".$park_userid;  
  104.  $end_download_query=$db->execute($end_download_tsql);  
  105.  $update_prod_tsql="update sp_products set pr_download_times=pr_download_times+1 where pr_seq=".$prod_seq;  
  106.  $update_prod=$db->execute($update_prod_tsql);  
  107.  }  
  108. }   
  109. }else{  
  110. zen_jump_page("没有你要下载的文件!");  
  111. }  
  112. ?>  
0 0
原创粉丝点击