PHP远程下载类
<?php class download { var $url; //远程文件地址 var $file_name = "hdwiki.zip"; //下载来的文件名称 var $save_path = "./updatefile"; //下载到本地的文件路径 var $localfile; //下载到本地文件的路径和名称 var $warning; //警告信息 var $redown = 0; //是否重新下载 /*初始化*/ function seturl($url) { if (!emptyempty($url)) $this->url = $url; } function setfilename($file_name) { if (!emptyempty($file_name)) $this->file_name = $file_name; } function setsavepath($save_path) { if (!emptyempty($save_path)) $this->save_path = $save_path; } function setredown($redown) { if (!emptyempty($redown)) $this->redown = $redown; } function download($url, $redown = 0, $save_path = 0, $file_name = 0) { $this->seturl($url); $this->setfilename($file_name); $this->setsavepath($save_path); $this->setredown($redown); if (!file_exists($this->save_path)) { $dir = explode("/", $this->save_path); foreach ($dir as $p) mkdir($p); } } /* 检查url合法性函数 */ function checkurl() { return preg_match("/^(http|ftp)(://)([a-za-z0-9-_]+[./]+[w-_/]+.*)+$/i", $this->url); } //下载文件到本地 function downloadfile() { //检测变量 $this->localfile = $this->save_path . "/" . $this->file_name; if ($this->url == "" || $this->localfile == "") { $this->warning = "error: 变量设置错误."; return $this->warning; } if (!$this->checkurl()) { $this->warning = "error: url " . $this->url . " 不合法."; return $this->warning; } if (file_exists($this->localfile)) { if ($this->redown) { unlink($this->localfile); } else { $this->warning = "warning: 升级文件 " . $this->localfile . " 已经存在! <a href='?action=download&redown=1' target='_self'>重新下载</a>"; return $this->warning; //exit("error: 本地文件 ". $this->localfile ." 已经存在,请删除或改名后重新运行本程序."); } } //打开远程文件 $fp = fopen($this->url, "rb"); if (!$fp) { $this->warning = "error: 打开远程文件 " . $this->url . " 失败."; return $this->warning; } //打开本地文件 $sp = fopen($this->localfile, "wb"); if (!$sp) { $this->warning = "error: 打开本地文件 " . $this->localfile . " 失败."; return $this->warning; } //下载远程文件 //echo "正在下载远程文件,请等待"; while (!feof($fp)) { $tmpfile.= fread($fp, 1024); //echo strlen($tmpfile); } //保存文件到本地 fwrite($sp, $tmpfile); fclose($fp); fclose($sp); if ($this->redown) $this->warning = "success: 重新下载文件 " . $this->file_name . " 成功"; else $this->warning = "success: 下载文件 " . $this->file_name . " 成功"; return $this->warning; } } ?>
本文地址:http://www.phprm.com/scxz/fs4245.html
转载随意,但请附上文章地址:-)