您的位置:首页 > 编程语言 > PHP开发

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

2014-10-11 00:00 716 查看
摘要: 文件下载也是网站里常见的功能,有时候直接访问下载文件的地址也可以下载,但这样不是很好,太暴力,而且不是所有文件类型都支持这样下载。下面给大家分享一个php的文件下载示例程序。新建一个down.php,放入以下代码,就可以下载文件了

原文地址: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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息