001.
/**
002.
* 作用:FTP操作類( 拷貝,、移動(dòng),、刪除文件/創(chuàng)建目錄 )
003.
* 時(shí)間:2006/5/9
004.
* 作者:欣然隨風(fēng)
005.
* QQ:276624915
006.
*/
007.
class
class_ftp
008.
{
009.
public
$off
;
// 返回操作狀態(tài)(成功/失敗)
010.
public
$conn_id
;
// FTP連接
011.
/**
012.
* 方法:FTP連接
013.
* @FTP_HOST -- FTP主機(jī)
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服務(wù)器連接失敗"
);
021.
@ftp_login(
$this
->conn_id,
$FTP_USER
,
$FTP_PASS
)
or
die
(
"FTP服務(wù)器登陸失敗"
);
022.
@ftp_pasv(
$this
->conn_id,1);
// 打開被動(dòng)模擬
023.
}
024.
/**
025.
* 方法:上傳文件
026.
* @path -- 本地路徑
027.
* @newpath -- 上傳路徑
028.
* @type -- 若目標(biāo)目錄不存在則新建
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
"文件上傳失敗,請(qǐng)檢查權(quán)限及路徑是否正確,!"
;
035.
}
036.
/**
037.
* 方法:移動(dòng)文件
038.
* @path -- 原路徑
039.
* @newpath -- 新路徑
040.
* @type -- 若目標(biāo)目錄不存在則新建
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
"文件移動(dòng)失敗,,請(qǐng)檢查權(quán)限及原路徑是否正確!"
;
047.
}
048.
/**
049.
* 方法:復(fù)制文件
050.
* 說明:由于FTP無復(fù)制命令,本方法變通操作為:下載后再上傳到新的路徑
051.
* @path -- 原路徑
052.
* @newpath -- 新路徑
053.
* @type -- 若目標(biāo)目錄不存在則新建
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
"文件復(fù)制失敗,,請(qǐng)檢查權(quán)限及原路徑是否正確,!"
;
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
"文件刪除失敗,請(qǐng)檢查權(quán)限及路徑是否正確,!"
;
070.
}
071.
/**
072.
* 方法:生成目錄
073.
* @path -- 路徑
074.
*/
075.
function
dir_mkdirs(
$path
)
076.
{
077.
$path_arr
=
explode
(
'/'
,
$path
);
// 取目錄數(shù)組
078.
$file_name
=
array_pop
(
$path_arr
);
// 彈出文件名
079.
$path_div
=
count
(
$path_arr
);
// 取層數(shù)
080.
foreach
(
$path_arr
as
$val
)
// 創(chuàng)建目錄
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
"目錄創(chuàng)建失敗,,請(qǐng)檢查權(quán)限及路徑是否正確!"
;
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.
* 方法:關(guān)閉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'); // 移動(dòng)文件
110.
//$ftp->copy_file('a/cc.txt','a/b/dd.txt'); // 復(fù)制文件
111.
//$ftp->del_file('a/b/dd.txt'); // 刪除文件
112.
$ftp->close(); // 關(guān)閉FTP連接
113.
******************************************************************************/
114.
?>