<?php
/**
* 作用:FTP操作类
* 作者:军
* 时间:2010-7-5
*/
class FtpAction{
public $off; //返回操作状态
public $conn_id; //FTP连接
/**
* 方法:构造函数
* $FTP_HOST -- FTP主机
* $FTP_PORT -- 端口
* $FTP_USER -- 用户名
* $FTP_PASS -- 密码
*/
function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS){
$this->conn_id = ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败!");
ftp_login($this->conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败!");
ftp_pasv($this->conn_id,TRUE); //开启被动模式
}//End
/**
* 方法:创建FTP服务器目录
* $path:路径
*/
function mkdirs_ftp($path){
$path_arr = explode('/',$path); //取目录数组
$file_name = array_pop($path_arr); //弹出文件名
$path_div = count($path_arr); //取层数
foreach ($path_arr as $val){
if (ftp_chdir($this->conn_id,$val) == FALSE){
$tmp = ftp_mkdir($this->conn_id,$val);
if ($tmp == FALSE){
echo "目录创建失败,请检查权限及路径是否正确!";
exit();
}
ftp_chdir($this->conn_id,$val);
}
}
for ($i=1;$i<$path_div;$i++){ //回退到根
ftp_cdup($this->conn_id);
}
}//End mkdirs
/**
* 方法:删除文件
* $path:路径
*/
function del_ftp($path){
$this->off = ftp_delete($this->conn_id,$path);
if (!$this->off) {
echo "文件删除失败,请检查权限及路径是否正确!";
exit();
}
}//End del_ftp
/**
* 方法:上传文件
* $local_path : 本地路径
* $upload_path : 上传路径
* $type : 若目标目录不存在则新建(true)--false则不建
*/
function up_file($local_path,$upload_path,$type=true){
if ($type) $this->mkdirs_ftp($upload_path);
$this->off = ftp_put($this->conn_id,$upload_path,$local_path,FTP_BINARY);
if (!$this->off){
echo "文件上传失败,请检查权限及路径是否正确!";
exit();
}
}//End up_file
/**
* 方法:移动文件
* $oldpath:原路径
* $newpath:新路径
* $type:若目标目录不存在则新建(true)--false则不建
*/
function move_file($oldpath,$newpath,$type){
if ($type) $this->mkdirs_ftp($newpath);
$this->off = ftp_rename($this->conn_id,$oldpath,$newpath);
if (!$this->off){
echo "文件移动失败,请检查权限及路径是否正确!";
exit();
}
}//End move_file
/**
* 方法:复制文件
* $oldpath:原路径
* $newpath:新路径
* $type:若目标目录不存在则新建(true)--false则不建
*/
function copy_file($oldpath,$newpath,$type){
$downpath = "c:/tmp.dat"; //下载后再上传到新的路径,此为下载地目录地址
$this->off = ftp_get($this->conn_id,$downpath,$oldpath,FTP_BINARY); //下载
if (!$this->off){
echo "文件复制失败,请检查权限及路径是否正确!";
exit();
}else{
$this->up_file($downpath,$newpath,$type);
}
}//End copy_file
function pwd(){
$str = ftp_pwd($this->conn_id);
return $str;
}//End pwd
function nlist(){
$arr = ftp_nlist($this->conn_id,"/");
return $arr;
}
/**
* 方法:关闭FTP连接
*/
function close(){
ftp_close($this->conn_id);
}//End close
}//End FtpAction
?>