php实现简单文件下载的方法


Posted in PHP onJanuary 30, 2015

本文实例讲述了php实现简单文件下载的方法。分享给大家供大家参考。具体如下:

这里介绍的php文件下载代码,只是简单实现了一张图片的下载功能,还不完善,最好是封装到一个类里,或是采用函数调用。感兴趣的朋友可以在此基础上加以完善!

php文件下载代码如下:

<?php
$file_name = "2.jpg";//需要下载的图片
define("SPATH","/php/image/");//存放图片的相对路径
$file_sub_path = $_SERVER['DOCUMENT_ROOT'];//网站根目录的绝对地址
$file_path = $file_sub_path.SPATH.$file_name;//图片绝对地址,即前面三个连接
//判断文件是否存在
if(!file_exists($file_path)){
 echo "该文件不存在";
 return;
}
$fp = fopen($file_path,"r");//打开文件
$file_size = filesize($file_path);//获取文件大小
/*
*下载文件需要用到的header
*/
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=0;
//向浏览器返回数据
while(!feof($fp) && $file_count<$file_size){
 $file_con = fread($fp,$buffer);
 $file_count += $buffer;
 echo $file_con;//这里如果不echo,只会下载到0字节的文件
}
fclose($fp);
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
解析PHP缓存函数的使用说明
May 10 PHP
使用PHP编写的SVN类
Jul 18 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php获取excel文件数据
Apr 21 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
thinkphp 验证码 的使用小结
May 07 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 #PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 #PHP
PHP速成大法
Jan 30 #PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 #PHP
PHP制作百度词典查词采集器
Jan 29 #PHP
php+mysqli事务控制实现银行转账实例
Jan 29 #PHP
php+mysqli批量查询多张表数据的方法
Jan 29 #PHP
You might like
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
基于python指定包的安装路径方法
2018/10/27 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
eclipse创建python项目步骤详解
2019/05/10 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
财务管理职业生涯规划范文
2013/12/27 职场文书
阳光体育活动方案
2014/02/16 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
钱学森电影观后感
2015/06/04 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python