利用php header函数实现文件下载保存到本地

header() 函数向客户端发送原始的 http 报头,认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数,在 php教程 4 以及更高的版本中,您可以使用输出缓存来解决此问题,代码如下:

  1. <html>
  2. <?php
  3. // 结果出错
  4. // 在调用 header() 之前已存在输出
  5. header('location: http://www.phpfensi.com/');
  6. ?>

语法:header(string,replace,http_response_code)

参数 描述

string 必需,规定要发送的报头字符串。

replace 可选,指示该报头是否替换之前的报头,或添加第二个报头。

默认是 true(替换),false(允许相同类型的多个报头).

http_response_code 可选,把 http 响应代码强制为指定的值,php 4 以及更高版本可用.

PHP实例代码如下:

  1. <?php
  2. function downfile()
  3. {
  4. $filename=realpath("resume.html");
  5. header( "content-type: application/octet-stream ");
  6. header( "accept-ranges: bytes ");
  7. header( "accept-length: " .filesize($filename));
  8. header( "content-disposition: attachment; filename= 4.html");
  9. echo file_get_contents($filename);
  10. readfile($filename);
  11. }
  12. downfile();
  13. ?>
  14. <?php
  15. function downfile($fileurl)
  16. {
  17. $filename=$fileurl;
  18. $file = fopen($filename, "rb");
  19. header( "content-type: application/octet-stream ");
  20. header( "accept-ranges: bytes ");
  21. header( "content-disposition: attachment; filename= 4.doc");
  22. $contents = "";
  23. while (!feof($file)) {
  24. $contents .= fread($file, 8192);
  25. }
  26. echo $contents;
  27. fclose($file);
  28. }
  29. $url=$_request['url'];
  30. $url="http://www.phpfensi.com";
  31. downfile($url);
  32. ?>