zoukankan      html  css  js  c++  java
  • PHP CURL实现远程下载文件到本地

    <?php
    
    //$result=httpcopy('http://www.phpernote.com/image/logo.gif');
    
    echo '<pre>';print_r($result);
    
    function httpcopy($url,$file='',$timeout=60){
        $file=empty($file)?pathinfo($url,PATHINFO_BASENAME):$file;
        $dir=pathinfo($file,PATHINFO_DIRNAME);
        !is_dir($dir)&&@mkdir($dir,0755,true);
        $url=str_replace(' ',"%20",$url);
    	$result=array('fileName'=>'','way'=>'','size'=>0,'spendTime'=>0);
    	$startTime=explode(' ',microtime());
    	$startTime=(float)$startTime[0]+(float)$startTime[1];
        if(function_exists('curl_init')){
            $ch=curl_init();
            curl_setopt($ch,CURLOPT_URL,$url);
            curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
            $temp=curl_exec($ch);
            if(@file_put_contents($file,$temp)&&!curl_error($ch)){
    			$result['fileName']=$file;
    			$result['way']='curl';
    			$result['size']=sprintf('%.3f',strlen($temp)/1024);
            }
        }else{
            $opts=array(
                'http'=>array(
                'method'=>'GET',
                'header'=>'',
                'timeout'=>$timeout
    			)
            );
            $context=stream_context_create($opts);
            if(@copy($url,$file,$context)){
                $result['fileName']=$file;
    			$result['way']='copy';
    			$result['size']=sprintf('%.3f',strlen($context)/1024);
            }
        }
    	$endTime=explode(' ',microtime());
    	$endTime=(float)$endTime[0]+(float)$endTime[1];
    	$result['spendTime']=round($endTime-$startTime)*1000;//单位:毫秒
    	return $result;
    }
    

      PHP CURL实现远程下载文件到本地,该函数返回结果包括下载耗用的时间,保存的文件名,以及使用的下载方式。写的比较粗糙,如果大家有好的建议及改进方案,欢迎留言给我哦!

  • 相关阅读:
    两数之和
    输入一个int型数据,计算出该int型数据在内存中存储时1的个数。
    MySQL事务机制(Transaction)
    JAVA 之 深入理解String类
    MySQL 之 SQL练习
    python常用函数及循环
    python多版本配置pyenv
    ES6语法的简单示例
    学习笔记190—利用matlab求解方程组的解
    学习笔记189—pandas 获取Dataframe元素值的几种方法
  • 原文地址:https://www.cnblogs.com/jthb/p/4489297.html
Copyright © 2011-2022 走看看