php通用下载方法,php实现下载文件的三种方法

对于下载文件,下面的大哥已经写的很清楚,我就不多写了

1. 标签的直接访问下载

下载文件

2. 通过header函数设置访问下载

html

下载文件

服务器文件

$down = $_GET['f']; //获取文件参数

$filename = $down.'.zip'; //获取文件名称

$dir ="down/"; //相对于网站根目录的下载目录路径

$down_host = $_SERVER['HTTP_HOST'].'/'; //当前域名

//判断如果文件存在,则跳转到下载路径

if(file_exists(__DIR__.'/'.$dir.$filename)){

header('location:http://'.$down_host.$dir.$filename);

}else{

header('HTTP/1.1 404 Not Found');

}

3. head() 和 fread()函数把文件直接输出到浏览器

这样直接把访问路径隐藏起来了,对比第一第二中方法,安全性好一点

$file_name = "down";

$file_name = "down.zip"; //下载文件名

$file_dir = "./down/"; //下载文件存放目录

//检查文件是否存在

if (! file_exists ( $file_dir . $file_name )) {

header('HTTP/1.1 404 NOT FOUND');

} else {

//以只读和二进制模式打开文件

$file = fopen ( $file_dir . $file_name, "rb" );

//告诉浏览器这是一个文件流格式的文件

Header ( "Content-type: application/octet-stream" );

//请求范围的度量单位

Header ( "Accept-Ranges: bytes" );

//Content-Length是指定包含于请求或响应中数据的字节长度

Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );

//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。

Header ( "Content-Disposition: attachment; filename=" . $file_name );

//读取文件内容并直接输出到浏览器

echo fread ( $file, filesize ( $file_dir . $file_name ) );

fclose ( $file );

exit ();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值