国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP簡單文件下載函數

2024-09-04 11:45:08
字體:
來源:轉載
供稿:網友

php實現文件下載有許多的方法最多的就是直接顯示文件路徑了然后點擊下載即可,另一種是利用header函數再由filesize與fopen讀取文件進行下載了,這個可以實現限速下載了,但是個人認為使用header限速下載大文件是非常的不理想的,下面我們來看個例子.

例子,代碼如下:

  1. <?php 
  2. header("Content-Type; text/html; charset=utf-8"); 
  3. class DownFile { 
  4. public static function File($_path,$file_name) { 
  5. //解決中文亂碼問題 
  6. $_path=$_path.$file_name
  7. //判斷文件是否存在 
  8. if (!file_exists($_path)) { 
  9. exit('文件不存在'); 
  10. $_path=iconv('utf-8','gb2312',$_path); 
  11. $file_size=filesize($_path); 
  12. $fp=fopen($_path,'r'); 
  13. header("Content-type: application/octet-stream"); 
  14. header("Accept-Ranges: bytes"); 
  15. header("Accept-Length: $file_name"); 
  16. header("Content-Disposition: attachment; filename=$file_name"); 
  17. $buffer=1024; 
  18. $file_count=0; 
  19. while (!feof($fp) && ($file_size-$file_count>0)) { 
  20. $file_data=fread($fp,$buffer); 
  21. $file_count+=$buffer
  22. echo $file_data
  23. fclose($fp); 
  24. //路徑 
  25. $path='../'
  26. //文件名 
  27. $file_name='filelist.php'
  28. DownFile::File($path,$file_name); 
  29. ?> 

分析研究:使用header函數可以把像服務器端的腳本程序不需打包就可以進行下載了,像如php文件或html文件了,上面例子的核心語句是,代碼如下:

  1. $_path=iconv('utf-8','gb2312',$_path); 
  2. $file_size=filesize($_path); 
  3. $fp=fopen($_path,'r'); 
  4. header("Content-type: application/octet-stream"); 
  5. header("Accept-Ranges: bytes"); 
  6. header("Accept-Length: $file_name"); 
  7. header("Content-Disposition: attachment; filename=$file_name"); 
  8. $buffer=1024; 
  9. $file_count=0; 
  10. while (!feof($fp) && ($file_size-$file_count>0)) { 
  11. $file_data=fread($fp,$buffer); 
  12. $file_count+=$buffer
  13. echo $file_data

下面三句,一個轉換文件名編碼這個防止中文亂碼,第一個是獲取文件大小,第三個是使用fopen讀取文件,代碼如下:

  1. $_path=iconv('utf-8','gb2312',$_path); 
  2. $file_size=filesize($_path); 
  3. $fp=fopen($_path,'r'); 

下面幾行代碼是告訴瀏覽器我們要發送的文件是什么內容與文件名,代碼如下:

  1. header("Content-type: application/octet-stream"); 
  2. header("Accept-Ranges: bytes"); 
  3. header("Accept-Length: $file_name"); 
  4. header("Content-Disposition: attachment; filename=$file_name"); 

下面三行是告訴我們最大下載不能超過1MB第秒,并且循環一直下載,直到文件下載完畢即可,代碼如下:

  1. $buffer=1024; 
  2. $file_count=0; 
  3. while (!feof($fp) && ($file_size-$file_count>0)) { 
  4. $file_data=fread($fp,$buffer); 
  5. $file_count+=$buffer
  6. echo $file_data
  7. //開源代碼Vevb.com

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荃湾区| 蕲春县| 孟连| 哈巴河县| 乐清市| 大同市| 南江县| 永春县| 廊坊市| 永新县| 台北市| 河津市| 兴山县| 庄河市| 开化县| 抚州市| 漯河市| 乐至县| 舞钢市| 昆山市| 永嘉县| 巴楚县| 武冈市| 旬阳县| 桃江县| 西安市| 新乡市| 新巴尔虎右旗| 江永县| 天台县| 德州市| 萨嘎县| 探索| 彩票| 班玛县| 四川省| 莲花县| 青川县| 东辽县| 宁波市| 武定县|