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 相关文章推荐
MYSQL环境变量设置方法
Jan 15 PHP
php获取某个目录大小的代码
Sep 10 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
php英文单词统计器
Jun 23 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
js计数器代码
2006/11/04 Javascript
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
tensorflow实现简单的卷积网络
2018/05/24 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
django的model操作汇整详解
2019/07/26 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
大学军训自我鉴定
2013/12/15 职场文书
取保候审保证书
2014/04/30 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
军训结束新闻稿
2015/07/17 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers