php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
php使用ftp实现文件上传代码片段:
<?php
/**
*ftp上传文件类
*/
classFtp{
/**
*测试服务器
*
*@vararray
*/
private$testServer=array(
'host'=>'ip',
'port'=>21,
'user'=>'userName',
'pwd'=>'password'
);
/**
*打开并登录服务器
*
*@paramstring$flag服务器标识test
*@returnmixed
*0:服务器连接失败
*1:服务器登录失败
*resource连接标识
*/
publicfunctionopenServer($flag='test'){
//选择服务器
$config=$this->getServerConfig($flag);
//连接服务器
$connect=ftp_connect($config['host'],$config['port']);
if($connect==false)return0;
//登录服务器
if(!ftp_login($connect,$config['user'],$config['pwd']))return1;
//打开被动模式,数据的传送由客户机启动,而不是由服务器开始
ftp_pasv($connect,true);
//返回连接标识
return$connect;
}
/**
*创建目录并将目录定位到当请目录
*
*@paramresource$connect连接标识
*@paramstring$dirPath目录路径
*@returnmixed
*2:创建目录失败
*true:创建目录成功
*/
publicfunctionmakeDir($connect,$dirPath){
//处理目录
$dirPath='/'.trim($dirPath,'/');
$dirPath=explode('/',$dirPath);
foreach($dirPathas$dir){
if($dir=='')$dir='/';
//判断目录是否存在
if(@ftp_chdir($connect,$dir)==false){
//判断目录是否创建成功
if(@ftp_mkDir($connect,$dir)==false){
return2;
}
@ftp_chdir($connect,$dir);
}
}
returntrue;
}
/**
*关闭服务器
*
*@paramresource$connect连接标识
*/
publicfunctioncloseServer($connect){
if(!empty($connect))ftp_close($connect);
}
/**
*上传文件
*
*@paramstring$flag服务器标识
*@paramstring$local上传文件的本地路径
*@paramstring$remote上传文件的远程路径
*@returnint
*0:服务器连接失败
*1:服务器登录失败
*2:创建目录失败
*3:上传文件失败
*4:上传成功
*/
publicfunctionupload($flag='test',$local,$remote){
//连接并登录服务器
$connect=$this->openServer($flag);
if(($connect===0)||($connect===1))return$connect;
//上传文件目录处理
$mdr=$this->makeDir($connect,dirname($remote));
if($mdr===2)return2;
//上传文件
$result=ftp_put($connect,basename($remote),$local,FTP_BINARY);
//关闭服务器
$this->closeServer($connect);
//返回结果
return(!$result)?3:4;
}
/**
*删除文件
*
*@paramstring$flag服务器标识
*@paramstring$remote文件的远程路径
*@returnint
*0:服务器连接失败
*1:服务器登录失败
*2:删除失败
*3:删除成功
*/
publicfunctiondelete($flag='test',$remote){
//连接并登录服务器
$connect=$this->openServer($flag);
if(($connect===0)||($connect===1))return$connect;
//删除
$result=ftp_delete($connect,$remote);
//关闭服务器
$this->closeServer($connect);
//返回结果
return(!$result)?2:3;
}
/**
*读取文件
*
*@paramstring$flag服务器标识
*@paramstring$remote文件的远程路径
*@returnmixed
*0:服务器连接失败
*1:服务器登录失败
*/
publicfunctionread($flag,$remote){
//连接并登录服务器
$connect=$this->openServer($flag);
if(($connect===0)||($connect===1))return$connect;
//读取
$result=ftp_nlist($connect,$remote);
//关闭服务器
$this->closeServer($connect);
//返回结果
foreach($resultas$key=>$value){
if(in_array($value,array('.','..')))unset($result[$key]);
}
returnarray_values($result);
}
/**
*获取ftp服务器配置
*
*@paramstring$flag服务器标识test
*@returnarrayftp服务器连接配置
*/
privatefunctiongetServerConfig($flag='test'){
$flag=strtolower($flag);
//测试服务器
if($flag=='test')return$this->testServer;
//默认返回测试服务器
return$this->testServer;
}
}
?>
以上就是小编为大家带来的php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)的全部内容了,希望对大家有所帮助,多多支持毛票票~