php三种方式下载文件

2020-04-25 981 阅读 0评论

1、直接添加文件链接

<button>

    <a href = "http://localhost/down.zip">

    下载文件</button>

点击该按钮下载:
这里写图片描述

2、传递参数查找并跳转到下载链接

传递参数:

<button>

    <a href = "http://localhost?f='down'">

    下载文件

</button>

查找文件并挑战到下载链接:

<?php$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()函数把文件直接输出到浏览器

<?php 

$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

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 981人围观)