FTP类
2023-09-14 08:59:48 时间
*使用$ftps = pc_base::load_sys_class(ftps);进行初始化。
*首先通过 $ftps- connect($host,$username,$password,$post,$pasv,$ssl,$timeout);进行FTP服务器连接。
*通过具体的函数进行FTP的操作。
*$ftps- mkdir() 创建目录,可以创建多级目录以“/abc/def/higk”的形式进行多级目录的创建。
*$ftps- put()上传文件
*$ftps- rmdir()删除目录
*$ftps- f_delete()删除文件
*$ftps- nlist()列出指定目录的文件
*$ftps- chdir()变更当前文件夹
*$ftps- get_error()获取错误信息
*/
class ftps {
//FTP 连接资源
private $link;
//FTP连接时间
public $link_time;
//错误代码
private $err_code = 0;
//传送模式{文本模式:FTP_ASCII, 二进制模式:FTP_BINARY}
public $mode = FTP_BINARY;
/**
* 连接FTP服务器
* @param string $host 服务器地址
* @param string $username 用户名
* @param string $password 密码
* @param integer $port 服务器端口,默认值为21
* @param boolean $pasv 是否开启被动模式
* @param boolean $ssl 是否使用SSL连接
* @param integer $timeout 超时时间
*/
public function connect($host, $username = , $password = , $port = 21, $pasv = false, $ssl = false, $timeout = 30) {
$start = time();
if ($ssl) {
if (!$this- link = @ftp_ssl_connect($host, $port, $timeout)) {
$this- err_code = 1;
return false;
}
} else {
if (!$this- link = @ftp_connect($host, $port, $timeout)) {
$this- err_code = 1;
return false;
}
}
if (@ftp_login($this- link, $username, $password)) {
if ($pasv) ftp_pasv($this- link, true);
$this- link_time = time()-$start;
return true;
} else {
$this- err_code = 1;
return false;
}
register_shutdown_function(array( $this,close));
}
/**
* 创建文件夹
* @param string $dirname 目录名,
*/
public function mkdir($dirname) {
if (!$this- link) {
$this- err_code = 2;
return false;
}
$dirname = $this- ck_dirname($dirname);
$nowdir = /;
foreach ($dirname as $v) {
if ($v !$this- chdir($nowdir.$v)) {
if ($nowdir) $this- chdir($nowdir);
@ftp_mkdir($this- link, $v);
}
if($v) $nowdir .= $v./;
}
return true;
}
/**
* 上传文件
* @param string $remote 远程存放地址
* @param string $local 本地存放地址
*/
public function put($remote, $local) {
if (!$this- link) {
$this- err_code = 2;
return false;
}
$dirname = pathinfo($remote,PATHINFO_DIRNAME);
if (!$this- chdir($dirname)) {
$this- mkdir($dirname);
}
if (@ftp_put($this- link, $remote, $local, $this- mode)) {
return true;
} else {
$this- err_code = 7;
return false;
}
}
/**
* 删除文件夹
* @param string $dirname 目录地址
* @param boolean $enforce 强制删除
*/
public function rmdir($dirname, $enforce = false) {
if (!$this- link) {
$this- err_code = 2;
return false;
}
$list = $this- nlist($dirname);
if ($list $enforce) {
$this- chdir($dirname);
foreach ($list as $v) {
$this- f_delete($v);
}
} elseif ($list !$enforce) {
$this- err_code = 3;
return false;
}
@ftp_rmdir($this- link, $dirname);
return true;
}
/**
* 删除指定文件
* @param string $filename 文件名
*/
public function f_delete($filename) {
if (!$this- link) {
$this- err_code = 2;
return false;
}
if (@ftp_delete($this- link, $filename)) {
return true;
} else {
$this- err_code = 4;
return false;
}
}
/**
* 返回给定目录的文件列表
* @param string $dirname 目录地址
* @return array 文件列表数据
*/
public function nlist($dirname) {
if (!$this- link) {
$this- err_code = 2;
return false;
}
if ($list = @ftp_nlist($this- link, $dirname)) {
return $list;
} else {
$this- err_code = 5;
return false;
}
}
/**
* 在 FTP 服务器上改变当前目录
* @param string $dirname 修改服务器上当前目录
*/
public function chdir($dirname) {
if (!$this- link) {
$this- err_code = 2;
return false;
}
if (@ftp_chdir($this- link, $dirname)) {
return true;
} else {
$this- err_code = 6;
return false;
}
}
/**
* 获取错误信息
*/
public function get_error() {
if (!$this- err_code) return false;
$err_msg = array(
1= Server can not connect,
2= Not connect to server,
3= Can not delete non-empty folder,
4= Can not delete file,
5= Can not get file list,
6= Can not change the current directory on the server,
7= Can not upload files
);
return $err_msg[$this- err_code];
}
/**
* 检测目录名
* @param string $url 目录
* @return 由 / 分开的返回数组
*/
private function ck_dirname($url) {
$url = str_replace(\\, /, $url);
$urls = explode(/, $url);
return $urls;
}
/**
* 关闭FTP连接
*/
public function close() {
return @ftp_close($this- link);
}
成功之门今朝网络 http://www.109999.com 时间: 2005-7-23 22:55:05 来源:天极yesky 编辑:莫非
文/子夜编译 最近,分配给我一个项目,这个项目已成功运转,在这个项目中我需要允许我们的用户经由XML和FTP向另一个公司输出它们的数据。
成功之门今朝网络 http://www.109999.com 时间: 2005-7-23 22:55:05 来源:天极yesky 编辑:莫非
文/子夜编译 最近,分配给我一个项目,这个项目已成功运转,在这个项目中我需要允许我们的用户经由XML和FTP向另一个公司输出它们的数据。
相关文章
- 网工Python之路之paramiko 模块实验(六)FTP推送备份文件
- Java 通过FTP 上传文件的简单例子详解编程语言
- 器上文件Linux 检查 FTP 服务器文件的方法(linux查看ftp服务)
- Linux查看安装FTP服务的方法(linux查看安装ftp)
- Linux实现FTP同步:解决文件传输难题(ftp同步linux)
- FTP在Linux系统上如何重启(ftplinux重启)
- Linux使用FTP协议轻松获取远程文件(linux获取远程文件)
- Mozilla Firefox v90.0版发布 彻底移除FTP相关代码新增静默升级功能等
- Linux FTP账户安全管理(linuxftp帐号)
- 安装LINUX:从FTP服务器获取软件包(linuxftp安装包)
- Linux下如何限制FTP访问?(linux限制ftp)
- Linux环境下FTP上传文件快速方式(linuxftp上传)
- Linux下的匿名FTP服务:安全、便捷的文件共享(linux匿名ftp)
- win2003防火墙导致ftp无法使用的解决方法