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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   最近在学习用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;
        }
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值