php远程下载zip文件到本地

203 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 php远程下载zip文件到本地

 
    /**
     * 远程下载zip文件
     * @param string $url 远程zip文件地址(http://www.xxx.com/upgrade/fileName.zip)
     * @param string $file 本地下载目录文件名 (D:/phpstudy_pro/WWW/www.test.com/public/download/newFileName.zip)
     * @param int    $timeout 超时时间
     */
    public function downloadZip($url='', $file='', $timeout=60) {
		if(file_exists($file)){
			unlink($file);
		}
        $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)) {
                return $file;
            } else {
                return false;
            }
        }
    }