文档章节

php文件下载功能简单源码示例

六月笔记
 六月笔记
发布于 2014/10/11 13:59
字数 474
阅读 74
收藏 0

原文地址:http://www.junbj.com/post/46

文件下载也是网站里常见的功能,有时候直接访问下载文件的地址也可以下载,但这样不是很好,太暴力,而且不是所有文件类型都支持这样下载。下面给大家分享一个php的文件下载示例程序。新建一个down.php,放入以下代码,就可以下载文件了。可以给down.php传一个参数来指定所需下载的文件名,比如down.php?fn=test.jpg,就可以下载同一目录下的test.jpg文件。

header("Content-type:text/html;charset=utf-8");

// 获取需下载的文件名,这里假设需下载的文件和本php文件在同一目录,如果不在记得调整相对路径
// 可以在同一目录下新建一个 test.jpg 文件测试
$fname = isset($_GET['fn']) ? $_GET['fn'] : 'test.jpg';
$fpath = $_SERVER['DOCUMENT_ROOT'].'/'.$fname;

// 判断文件是否存在
if( !file_exists($fpath) ){
	exit('文件不存在!请核对文件名称!');
}

// 文件存在,继续下一步
$fs = fopen($fpath,'r');

$fsize = filesize($fpath); // 注意这里参数是文件路径,不是资源$fs

// http头声明该程序是一个文件
Header("Content-type: application/octet-stream"); 
Header("Accept-Ranges: bytes"); 
Header("Accept-Length:".$fsize); 
Header("Content-Disposition: attachment; filename=".$fname); 

$minisize = 1024; // 每次读取的文件长度

$readsize = 0; // 声明文件已经读取的长度

// 循环读取需下载的文件,直到文件末尾,下载完成
while(!feof($fs) && $readsize<$fsize){ 
	$file=fread($fs,$minisize); 
	$readsize+=$minisize; 
	echo $file; 
} 
fclose($fs);


© 著作权归作者所有

六月笔记
粉丝 0
博文 2
码字总数 1034
作品 0
普陀
私信 提问
Java 轻博客--JFBlog

JFBlog 是基于 JFinal 开发的 Java 开源轻博客,使用了 PHP 开源轻博客Typecho的一些样式,包含大多数博客的一些基本功能:文章管理、留言管理、分类标签管理、友链管理、关于等,供学习和交...

Realfighter
2014/12/26
7.6K
1
2014 年最热门的国人开发开源软件 TOP 100 - 开源中国社区

不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必。做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软...

未来十年
2015/02/16
0
0
JSP 页面布局工具--jWebBox

这是一个JSP页面布局工具,功能和 Tiles, Sitemesh 类似(还有最近的轻量级JSPLayout和Stripes布局工具等),用于JSP页面的布局,其特点是无须XML配置,用纯Java类代替XML(与jBeanBox项目类似)...

yong9981
2016/08/19
740
1
docker php-fpm 拓展安装

PHP 源码 为了保证 Docker 镜像尽量小,PHP 的源文件是以压缩包的形式存在镜像中,官方提供了 docker-php-source 快捷脚本,用于对源文件压缩包的解压(extract)及解压后的文件进行删除(d...

Jack088
01/28
133
0
JFBlog 1.0 发布,基于 JFinal 的 Java 轻博客

JFBlog Java 轻博客 1.0 发布,此版本是首个发布版本。 JFBlog 是基于 JFinal 开发的 Java 开源轻博客,使用了 PHP 开源轻博客Typecho的一些样式,包含大多数博客的一些基本功能:文章管理、...

Realfighter
2014/12/26
3.1K
34

没有更多内容

加载失败,请刷新页面

加载更多

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
21分钟前
4
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
24分钟前
4
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
46分钟前
3
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
46分钟前
3
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
48分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部