程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP CURL實現遠程下載文件到本地

PHP CURL實現遠程下載文件到本地

編輯:關於PHP編程

PHP CURL實現遠程下載文件到本地


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獲取遠程圖片並下載保存到本地
  • PHP 利用 Curl Functions 實現多線程抓取網頁和下載文件
  • php判斷遠程文件是否存在的辦法
  • php獲取遠程文件的大小
  • php讀取目錄並列表顯示目錄中的文件的函數
  • php清空(刪除)指定目錄下的文件,不刪除目錄文件夾的方法
  • php獲取目錄所有文件並將結果保存到數組的程序
  • 利用SecureCRT上傳、下載文件(使用sz與rz命令)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved