您当前的位置: 首页 > 网站编程 > PHP教程 > PHP文件操作之PHP文件下载实例

PHP文件操作之PHP文件下载实例

作者:xiaoxiao 来源:未知 发布时间: 2013-10-18 16:19 点击:
在前面的一篇文章PHP文件操作之PHP文件上传实例中,说到了使用PHP实现文件上传的方法,今天就来说一说与上传相反的操作-使用PHP实例文件下载。文件下载可以说大家都会操作过,无论是FTP还是HTTP,他们使用的原理都是一样的:将文件存放到服务器上指定的位置,然后使用

PHP文件操作之PHP文件下载实例

    在前面的一篇文章“PHP文件操作之PHP文件上传实例”中,说到了使用PHP实现文件上传的方法,今天就来说一说与上传相反的操作-使用PHP实例文件下载。文件下载可以说大家都会操作过,无论是FTP还是HTTP,他们使用的原理都是一样的:将文件存放到服务器上指定的位置,然后使用语言程序通过FTP协议或者HTTP协议来实现下载过程,当用点击下载链接即可实现文件下载。
  
  本文要讲的PHP文件下载,就是一种基于HTTP协议的文件传输过程,也是PHP开发过程中,开发者一般都会使用到的一种文件操作过程。下面就开始今天的主题-如何使用PHP实现文件下载。
  首先,在自己的本地PHP环境存放本地站点的根目录下新建一个名为download(下载)的目录,打开这个目录,新建一个存放下载文件的名为down的目录,然后再新建两个PHP文件download.php和downloadService.php,我的思路是将PHP文件下载这一过程封装在一个自定义函数(downloadService.php里面),然后在一个控制器(download.php)里面调用这个函数来实现下载过程。文件目录结构如下:
  /download
  /download/down/
  /download/download.php
  /download/downloadService.php
  然后,就开始编写程序代码,分别如下:
  一、自定义PHP文件下载函数downloadService.php
  <?php
  /*自定义下载函数,其中$file_name为下载文件名,$file_sub_dir为下载文件的子路径*/
  function down_file($file_name,$file_sub_dir){
  //PHP读取中文时需要对中文进行转码
  $file_name=iconv("utf-8","gb2312",$file_name);
  //使用绝对路径
  $file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;
  //判断文件是否存在
  if(!file_exists($file_path)){
  echo "文件不存在!";
  return;
  }
  //打开文件
  $fp=fopen($file_path,"r");
  //获取文件大小
  $file_size=filesize($file_path);
  if($file_size>10*1024*1024){
  echo "<script language='javascript'>window.alert:'文件过大,不能下载!'</script>";
  }
  //返回的文件
  header("Content-type: application/octet-stream");
  //按照字节大小返回
  header("Accept-Ranges: bytes");
  //返回文件大小
  header("Accept-Length: $file_size");
  //客户端弹出的对对话框,对应的文件名
  header("Content-Disposition: attachment; filename=".$file_name);
  //向客户端回头数据
  $buffer=1024;
  //为了下载安全,我们最好做一个文件字节读取计数器$file_count
  $file_count=0;
  //这句话用于判断文件是否结束
  while(!feof($fp) && ($file_size-$file_count>0) ){
  $file_data=fread($fp,$buffer);
  //统计读了多少字节
  $file_count+=$buffer;
  //把部分数据送给浏览器
  echo $file_data;
  }
  //关闭文件
  fclose($fp);
  }
  ?>
  二、响应用户请求控制器download.php
  <?php
  require_once 'downloadService.php';
  //设置文件编码
  header("content-type: text/html; charset:utf-8");
  //接收要下载文件的名字
  $file_name=$_REQUEST['filename'];
  //调用自定义函数
  down_file($file_name,"/download/down")
  ?>
  以上就是PHP下载的程序部分,当然要实现文件下载,还得需要用户请求(这里是指通过GET请求),这里再在/download目录下新建一个用户请求界面index.php,其源代码如下:
  <html>
  <head>
  <title>文件下载实例</title>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  </head>
  <body>
  <a href="download.php?filename=yoursfilename">点击下载</a><br><br/>
  <a href="download.php?filename=yoursfilename">点击下载</a><br><br/>
  </body>
  </html>
  至此PHP文件下载过程实例就说完了,欢迎试用,评论和留言。

分享到:
本文"PHP文件操作之PHP文件下载实例"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4