PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
[导读] *** 作用: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.
?>