php檔案重新命名下載程式碼示例

技術小胖子發表於2017-11-01

 php檔案重新命名下載程式碼示例

Bata1.0、基礎程式碼(file_exists僅支援本地,還有下載時檔名亂碼問題)


  1. <?php 
  2. $file = `success.jpg`
  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. ?> 

 

Bata2.0、解決中文名顯示亂碼問題(但還是僅支援伺服器本地)

 


  1. //$down_url=$server_name.$renamefile_url.`/`.$renamefile_name;        //file_exists僅支援本地 
  2. $down_url=$renamefile_url.`/`.$renamefile_name
  3. //$sourcefile_name = iconv(“UTF-8”,`GBK`,$sourcefile_name); 
  4. $sourcefile_name = urlencode($sourcefile_name); 
  5. $sourcefile_name = str_replace(“+”“%20”$sourcefile_name);  
  6.  
  7.  
  8.  
  9. if(file_exists($down_url)){ 
  10.  
  11.     $ua = $_SERVER[“HTTP_USER_AGENT”];  
  12.     header(`Content-Description: File Transfer`); 
  13.     header(`Content-Type: application/octet-stream`); 
  14.      
  15.     //header(`Content-Disposition: attachment; filename=`.basename($sourcefile_name)); 
  16.      
  17.     if (preg_match(“/MSIE/”$ua)) { 
  18.     header(`Content-Disposition: attachment; filename=”` . $sourcefile_name . `”`); 
  19.     } else if (preg_match(“/Firefox/”$ua)) { 
  20.     header(`Content-Disposition: attachment; filename*=”utf8“` . $sourcefile_name . `”`); 
  21.     } else { 
  22.     header(`Content-Disposition: attachment; filename=”` . $sourcefile_name . `”`); 
  23.     }  
  24.      
  25.     header(`Content-Transfer-Encoding: binary`); 
  26.     header(`Expires: 0`); 
  27.     header(`Cache-Control: must-revalidate, post-check=0, pre-check=0`); 
  28.     header(`Pragma: public`); 
  29.     header(`Content-Length: ` . filesize($down_url)); 
  30.     ob_clean(); 
  31.     flush(); 
  32.     readfile($down_url); 
  33.     exit
  34. else
  35.     echo `檔案目錄不存在`

 

      本文轉自許琴 51CTO部落格,原文連結:http://blog.51cto.com/xuqin/1097932,如需轉載請自行聯絡原作者


相關文章