PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )

来源:PHP100   时间:2013-12-13 11:35:14   阅读数:49702

分享到: 19

[导读] *** 作用:FTP操作类( 拷贝、移动、删除文件 创建目录 )* 时间:2006 5 9* 作者:欣然随风* QQ:276624915* class class_ftp{ public $off; 返回操作状态(成功 失败) public $conn

001./**
002.* 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 )
003.* 时间:2006/5/9
004.* 作者:欣然随风
005.* QQ:276624915
006.*/
007.class class_ftp
008.{
009.public $off; // 返回操作状态(成功/失败)
010.public $conn_id; // FTP连接
011./**
012.* 方法:FTP连接
013.* @FTP_HOST -- FTP主机
014.* @FTP_PORT -- 端口
015.* @FTP_USER -- 用户名
016.* @FTP_PASS -- 密码
017.*/
018.function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS)
019.{
020.$this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败");
021.@ftp_login($this->conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败");
022.@ftp_pasv($this->conn_id,1); // 打开被动模拟
023.}
024./**
025.* 方法:上传文件
026.* @path -- 本地路径
027.* @newpath -- 上传路径
028.* @type -- 若目标目录不存在则新建
029.*/
030.function up_file($path,$newpath,$type=true)
031.{
032.if($type) $this->dir_mkdirs($newpath);
033.$this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY);
034.if(!$this->off) echo "文件上传失败,请检查权限及路径是否正确!";
035.}
036./**
037.* 方法:移动文件
038.* @path -- 原路径
039.* @newpath -- 新路径
040.* @type -- 若目标目录不存在则新建
041.*/
042.function move_file($path,$newpath,$type=true)
043.{
044.if($type) $this->dir_mkdirs($newpath);
045.$this->off = @ftp_rename($this->conn_id,$path,$newpath);
046.if(!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!";
047.}
048./**
049.* 方法:复制文件
050.* 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径
051.* @path -- 原路径
052.* @newpath -- 新路径
053.* @type -- 若目标目录不存在则新建
054.*/
055.function copy_file($path,$newpath,$type=true)
056.{
057.$downpath = "c:/tmp.dat";
058.$this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下载
059.if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!";
060.$this->up_file($downpath,$newpath,$type);
061.}
062./**
063.* 方法:删除文件
064.* @path -- 路径
065.*/
066.function del_file($path)
067.{
068.$this->off = @ftp_delete($this->conn_id,$path);
069.if(!$this->off) echo "文件删除失败,请检查权限及路径是否正确!";
070.}
071./**
072.* 方法:生成目录
073.* @path -- 路径
074.*/
075.function dir_mkdirs($path)
076.{
077.$path_arr = explode('/',$path); // 取目录数组
078.$file_name = array_pop($path_arr); // 弹出文件名
079.$path_div = count($path_arr); // 取层数
080.foreach($path_arr as $val) // 创建目录
081.{
082.if(@ftp_chdir($this->conn_id,$val) == FALSE)
083.{
084.$tmp = @ftp_mkdir($this->conn_id,$val);
085.if($tmp == FALSE)
086.{
087.echo "目录创建失败,请检查权限及路径是否正确!";
088.exit;
089.}
090.@ftp_chdir($this->conn_id,$val);
091.}
092.}
093.for($i=1;$i=$path_div;$i++) // 回退到根
094.{
095.@ftp_cdup($this->conn_id);
096.}
097.}
098./**
099.* 方法:关闭FTP连接
100.*/
101.function close()
102.{
103.@ftp_close($this->conn_id);
104.}
105.}// class class_ftp end
106./************************************** 测试 ***********************************
107.$ftp = new class_ftp('192.168.100.143',21,'user','pwd'); // 打开FTP连接
108.//$ftp->up_file('aa.txt','a/b/c/cc.txt'); // 上传文件
109.//$ftp->move_file('a/b/c/cc.txt','a/cc.txt'); // 移动文件
110.//$ftp->copy_file('a/cc.txt','a/b/dd.txt'); // 复制文件
111.//$ftp->del_file('a/b/dd.txt'); // 删除文件
112.$ftp->close(); // 关闭FTP连接
113.******************************************************************************/
114.?>
posted on 2015-07-17 11:10  岁月如梭  阅读(738)  评论(1编辑  收藏  举报