首頁 > 開發 > Php > 正文

PHP代碼實現遠程下載文件到本地的函數

2018-10-16 21:08:44
字體:
來源:轉載
供稿:網友

經常寫采集器發布接口需要使用到遠程附件的功能,所以自己寫了一個PHP遠程下載文件到本地的函數,一般情況下已經夠用了,如果服務器支持CURL函數,程序則會優先選擇CURL,因為測試結果表明CURL的響應時間及資源占用率比file_get_contents小得多;如果大家有好的建議及改進方案,歡迎留言給我哦!

<?php
echo httpcopy("http://www.baidu.com/img/baidu_sylogo1.gif");

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);

    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)) {
            return $file;
        } else {
            return false;
        }
    } else {
        $opts = array(
            "http"=>array(
            "method"=>"GET",
            "header"=>"",
            "timeout"=>$timeout)
        );
        $context = stream_context_create($opts);
        if(@copy($url, $file, $context)) {
            //$http_response_header
            return $file;
        } else {
            return false;
        }
    }
}
?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
金玫玫床戏