获取下载url的真实文件名和扩展名

本文探讨了如何使用PHP实现内部管理系统,通过获取特定URL的头部信息,解析包含文件名和扩展名的转向链接,从而实现自动下载及保存文件的功能。重点关注解决下载URL重定向问题的方法。

   最近在学习用PHP做一个软件下载的内部管理系统(MVC框架),需要先插入一条软件的下载记录到数据库,然后通过后台shell去自动下载该软件.但是有些下载的url是做了转向的,比如:http://download.phpwind.net/index.php?m=download&a=do&did=511,这种url无法获知真实的文件名和扩展,无法做到后台自动下载,自动保存,在网上找了一下,没有找到现成可用函数。可能是我水平太低,有些可能找到了也没有理解,呵呵。。

 

言归正传,即然没找到,只好自已写个自用函数。发出来让老鸟们指点。。

第一步:获取该url的header信息。

 

function file_ext($url)
    {
        $rs=(get_headers($url));  

                                                 //信息返回的是一串数组字符串,包括一些http状态等信息。将返回的字符串过滤.

        foreach($rs as $r){

                                                //用字符串函数过滤strstr,如果是文件转向,则返回的数组字符串里会有filename=

            if(strstr($r,'filename')){
                $filename=substr($r,(strrpos($r,'=')+1));
                $file_ext=substr($filename,(strrpos($filename,'.')+1));
                return array(pass_ext($file_ext),$filename);
            }

                                               //如果是301或302重定向,则返回的字符串里会有Location

            if(strstr($r,'Location')){
                $filename=substr($r,(strrpos($r,'/')+1));
                $file_ext=substr($filename,(strrpos($filename,'.')+1));
                return array(pass_ext($file_ext),$filename);
            }

                                               //如果返回字符串里没有发现这两种类型,则是[url]http://www.kanglesoft.com/download  /easypanel/easypanel-1.1.exe[/url]这类真实url。

 

        $filename=substr($url,(strrpos($url,'/')+1));
        $file_ext=substr($url,(strrpos($url,'.')+1));
        if($file_ext=='zip'||$file_ext=='7z'){
        return array($this->pass_ext($file_ext),$filename);
    }

    //管理系统只支持zip和7z格式,加个判定。

   function  pass_ext($file_ext)
    {
        if($file_ext=='zip'||$file_ext=='7z'){
            return $file_ext;
        }else{
            return false;
        }
    }

 

 

 

kangle web服务器( 简称:kangle ) 是一款跨平台、功能强大、安全稳定、易操作的高性能web服务器反向代理服务器软件。 除此:kangle也是一款专为做虚拟主机研发的web服务器。实现虚拟主机独立进程、独立身份运行。用户之间安全隔离,一个用户出问题不影响其他用户。安全支持php、asp、asp.net、java、ruby等多种动态开发语言。 kangle web服务器主要特点: 1、免费开源 kangle技术团队希望国人拥有一款真正好用、易用、实用的国产web服务器。 2、跨平台 可在linux、windows、freebsd、openbsd、netbsd、solaris等平台上运行。 3、可轻松查看到被攻击的url 这是kangle web服务器独有的,其它web服务器很难查找到。 4、性能高 工作模型多样化。Windows上采用iocp、Linux上采用epoll、Bsd上采用kqueue。 5、功能强大、灵活 kangle的访问控制理念来自linux的iptables防火墙,kangle拥有功能最小化的匹配模块标记模块,通过组合,反转等可以实现用户最复杂的需求; 谈kangle的访问控制:点击查看 6、是一款做idc的专业web服务器 .实现虚拟主机独立身份,独立进程。 .隔离攻击(实现某个虚拟主机受到外部攻击,不影响到服务器上其它虚拟主机)。 .智能防cc攻击(CC是http协议的攻击,不是tcp/ip,kangle是底层的web服务器,更懂http)。 .做全能空间(php虚拟主机、java虚拟主机等) 2013-08-21 kangle 3.2.3 *修复linux下ssl超连接数引发崩溃的bug *增加配置文件的content-type kangle web服务器截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值