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
转载随意,但请附上文章地址:-)