php下載遠程文件方法~


直接上代碼:

getFile("http://easyread.ph.126.net/N8gDl6ayo5wLgKbgT21NZQ==/7917056565549478184.jpg");
/**
* php實現下載遠程圖片保存到本地
**
* $url 圖片所在地址
* $path 保存圖片的路徑
* $filename 圖片自定義命名
* $type 使用什么方式下載 
* 0:curl方式,1:readfile方式,2file_get_contents方式
*
* return 文件名
*/
function getFile($url,$path='',$filename='',$type=0){
    if($url==''){return false;}
    //獲取遠程文件數據
    if($type===0){
        $ch=curl_init();
        $timeout=5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);//最長執行時間
        curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);//最長等待時間
        
        $img=curl_exec($ch);
        curl_close($ch);
    }
    if($type===1){
        ob_start(); 
        readfile($url);
        $img=ob_get_contents(); 
        ob_end_clean(); 
    }
    if($type===2){
        $img=file_get_contents($url);
    }
    //判斷下載的數據 是否為空 下載超時問題
    if(empty($img)){
        throw new \Exception("下載錯誤,無法獲取下載文件!");
    }
    
    //沒有指定路徑則默認當前路徑
    if($path===''){
        $path="./";
    }
    //如果命名為空
    if($filename===""){
        $filename=md5($img);
    }
    //獲取后綴名
    $ext=substr($url, strrpos($url, '.'));
    if($ext && strlen($ext)<5){
        $filename.=$ext;
    }
    
    //防止"/"沒有添加
    $path=rtrim($path,"/")."/";
    //var_dump($path.$filename);die();
    $fp2=@fopen($path.$filename,'a');

    fwrite($fp2,$img);
    fclose($fp2);
    //echo "finish";
    return $filename;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM