php文件下载代码,支持远程文件下载

本文章提供的三款文件下载代码有二款是支持本地服务器文件下载的,另一款支持下载远程服务器上的文件下载到本地,代码如下:

  1. function download($file_dir,$file_name)
  2. //参数说明:
  3. //file_dir:文件所在目录
  4. //file_name:文件名
  5. {
  6. $file_dir = chop($file_dir);//去掉路径中多余的空格
  7. //得出要下载的文件的路径
  8. if($file_dir != '')
  9. {
  10. $file_path = $file_dir;
  11. if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != '/')
  12. $file_path .= '/';
  13. $file_path .= $file_name;
  14. }
  15. else
  16. $file_path = $file_name;
  17. //判断要下载的文件是否存在
  18. if(!file_exists($file_path))
  19. {
  20. echo '对不起,你要下载的文件不存在。';
  21. return false;
  22. }
  23. $file_size = filesize($file_path);
  24. header("content-type: application/octet-stream");
  25. header("accept-ranges: bytes");
  26. header("accept-length: $file_size");
  27. header("content-disposition: attachment; filename=".$file_name);
  28. $fp = fopen($file_path,"r");
  29. $buffer_size = 1024;
  30. $cur_pos = 0;
  31. while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)
  32. {//开源代码phpfensi.com
  33. $buffer = fread($fp,$buffer_size);
  34. echo $buffer;
  35. $cur_pos += $buffer_size;
  36. }
  37. $buffer = fread($fp,$file_size-$cur_pos);
  38. echo $buffer;
  39. fclose($fp);
  40. return true;
  41. }
  1. <?php
  2. $file_name = "info_check.exe";
  3. $file_dir = "/public/www/download/";
  4. if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
  5. echo "文件找不到";
  6. exit;
  7. } else {
  8. $file = fopen($file_dir . $file_name,"r"); // 打开文件
  9. // 输入文件标签
  10. header("content-type: application/octet-stream");
  11. header("accept-ranges: bytes");
  12. header("accept-length: ".filesize($file_dir . $file_name));
  13. header("content-disposition: attachment; filename=" . $file_name);
  14. // 输出文件内容
  15. echo fread($file,filesize($file_dir . $file_name));
  16. fclose($file);
  17. exit;}
  18. ?>
  19. <?
  20. // 如果文件路径是http和ftp,下载代码如下:
  21. $file_name = "info_check.exe";
  22. $file_dir = " http://www.phpfensi.com/";
  23. $file = @ fopen($file_dir . $file_name,"r");
  24. if (!$file) {
  25. echo "文件找不到";
  26. } else {
  27. header("content-type: application/octet-stream");
  28. header("content-disposition: attachment; filename=" . $file_name);
  29. while (!feof ($file)) {
  30. echo fread($file,50000);
  31. }
  32. fclose ($file);
  33. }
  34. ?>