PHP简单文件下载函数
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-22 17:06:04 浏览: 评论:0
php实现文件下载有许多的方法最多的就是直接显示文件路径了然后点击下载即可,另一种是利用header函数再由filesize与fopen读取文件进行下载了,这个可以实现限速下载了,但是个人认为使用header限速下载大文件是非常的不理想的,下面我们来看个例子.
例子,代码如下:
- <?php
- header("Content-Type; text/html; charset=utf-8");
- class DownFile {
- public static function File($_path,$file_name) {
- //解决中文乱码问题
- $_path=$_path.$file_name;
- //判断文件是否存在
- if (!file_exists($_path)) {
- exit('文件不存在');
- }
- $_path=iconv('utf-8','gb2312',$_path);
- $file_size=filesize($_path);
- $fp=fopen($_path,'r');
- header("Content-type: application/octet-stream");
- header("Accept-Ranges: bytes");
- header("Accept-Length: $file_name");
- header("Content-Disposition: attachment; filename=$file_name");
- $buffer=1024;
- $file_count=0;
- while (!feof($fp) && ($file_size-$file_count>0)) {
- $file_data=fread($fp,$buffer);
- $file_count+=$buffer;
- echo $file_data;
- }
- fclose($fp);
- }
- }
- //路径
- $path='../';
- //文件名
- $file_name='filelist.php';
- DownFile::File($path,$file_name);
- ?>
分析研究:使用header函数可以把像服务器端的脚本程序不需打包就可以进行下载了,像如php文件或html文件了,上面例子的核心语句是,代码如下:
- $_path=iconv('utf-8','gb2312',$_path);
- $file_size=filesize($_path);
- $fp=fopen($_path,'r');
- header("Content-type: application/octet-stream");
- header("Accept-Ranges: bytes");
- header("Accept-Length: $file_name");
- header("Content-Disposition: attachment; filename=$file_name");
- $buffer=1024;
- $file_count=0;
- while (!feof($fp) && ($file_size-$file_count>0)) {
- $file_data=fread($fp,$buffer);
- $file_count+=$buffer;
- echo $file_data;
- }
下面三句,一个转换文件名编码这个防止中文乱码,第一个是获取文件大小,第三个是使用fopen读取文件,代码如下:
- $_path=iconv('utf-8','gb2312',$_path);
- $file_size=filesize($_path);
- $fp=fopen($_path,'r');
下面几行代码是告诉浏览器我们要发送的文件是什么内容与文件名,代码如下:
- header("Content-type: application/octet-stream");
- header("Accept-Ranges: bytes");
- header("Accept-Length: $file_name");
- header("Content-Disposition: attachment; filename=$file_name");
下面三行是告诉我们最大下载不能超过1MB第秒,并且循环一直下载,直到文件下载完毕即可,代码如下:
- $buffer=1024;
- $file_count=0;
- while (!feof($fp) && ($file_size-$file_count>0)) {
- $file_data=fread($fp,$buffer);
- $file_count+=$buffer;
- echo $file_data;
- //开源代码phpfensi.com
Tags: PHP文件下载 PHP下载函数
- 上一篇:php多文件上传 多图片上传程序代码
- 下一篇:图解PHP文件下载原理实例
相关文章
- ·php实现文件下载功能的流程分析(2014-07-31)
- ·php文件下载实现方法(2014-08-05)
- ·php文件下载的应用实例(2014-08-17)
- ·php文件下载实例(2014-09-06)
- ·php文件下载代码,支持远程文件下载(2014-09-09)
- ·图解PHP文件下载原理实例(2015-04-04)
- ·PHP实现文件的下载实例代码(2015-04-09)
- ·实现文件下载功能 PHP 代码片断(2015-04-13)
- ·php实现文件下载功能的几个代码分享(2020-12-12)
- ·php实现文件下载代码分享(2021-04-05)
- ·PHP实现文件下载断点续传详解(2021-04-17)
- ·php实现图片文件与下载文件防盗链的方法(2021-04-21)
- ·php实现简单文件下载的方法(2021-05-09)
- ·php隐藏实际地址的文件下载方法(2021-05-22)
- ·PHP实现文件上传与下载实例与总结(2021-07-14)
- ·PHP使用header方式实现文件下载功能(2021-08-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)