FTP类

简介:
Java代码   收藏代码
  1. <?php  
  2. /** 
  3.  * FTP操作类 
  4.  * @author chenzhouyu 
  5.  * 
  6.  *使用$ftps = pc_base::load_sys_class('ftps');进行初始化。 
  7.  *首先通过 $ftps->connect($host,$username,$password,$post,$pasv,$ssl,$timeout);进行FTP服务器连接。 
  8.  *通过具体的函数进行FTP的操作。 
  9.  *$ftps->mkdir() 创建目录,可以创建多级目录以“/abc/def/higk”的形式进行多级目录的创建。 
  10.  *$ftps->put()上传文件 
  11.  *$ftps->rmdir()删除目录 
  12.  *$ftps->f_delete()删除文件 
  13.  *$ftps->nlist()列出指定目录的文件 
  14.  *$ftps->chdir()变更当前文件夹 
  15.  *$ftps->get_error()获取错误信息 
  16.  */  
  17. class ftps {  
  18.     //FTP 连接资源  
  19.     private $link;  
  20.     //FTP连接时间  
  21.     public $link_time;  
  22.     //错误代码  
  23.     private $err_code = 0;  
  24.     //传送模式{文本模式:FTP_ASCII, 二进制模式:FTP_BINARY}  
  25.     public $mode = FTP_BINARY;  
  26.       
  27.     /** 
  28.      * 连接FTP服务器 
  29.      * @param string $host       服务器地址 
  30.      * @param string $username   用户名 
  31.      * @param string $password   密码 
  32.      * @param integer $port       服务器端口,默认值为21 
  33.      * @param boolean $pasv        是否开启被动模式 
  34.      * @param boolean $ssl      是否使用SSL连接 
  35.      * @param integer $timeout     超时时间  
  36.      */  
  37.     public function connect($host, $username = '', $password = '', $port = '21', $pasv = false, $ssl = false, $timeout = 30) {  
  38.         $start = time();  
  39.         if ($ssl) {  
  40.             if (!$this->link = @ftp_ssl_connect($host, $port, $timeout)) {  
  41.                 $this->err_code = 1;  
  42.                 return false;  
  43.             }  
  44.         } else {  
  45.             if (!$this->link = @ftp_connect($host, $port, $timeout)) {  
  46.                 $this->err_code = 1;  
  47.                 return false;  
  48.             }  
  49.         }  
  50.           
  51.         if (@ftp_login($this->link, $username, $password)) {  
  52.             if ($pasv) ftp_pasv($this->link, true);  
  53.             $this->link_time = time()-$start;  
  54.            return true;  
  55.         } else {  
  56.             $this->err_code = 1;  
  57.            return false;  
  58.         }  
  59.         register_shutdown_function(array(&$this,'close'));  
  60.     }  
  61.       
  62.     /** 
  63.      * 创建文件夹 
  64.      * @param string $dirname 目录名, 
  65.      */  
  66.     public function mkdir($dirname) {  
  67.         if (!$this->link) {  
  68.             $this->err_code = 2;  
  69.             return false;  
  70.         }   
  71.         $dirname = $this->ck_dirname($dirname);  
  72.         $nowdir = '/';  
  73.         foreach ($dirname as $v) {  
  74.             if ($v && !$this->chdir($nowdir.$v)) {  
  75.                 if ($nowdir) $this->chdir($nowdir);  
  76.                 @ftp_mkdir($this->link, $v);  
  77.             }  
  78.             if($v) $nowdir .= $v.'/';  
  79.         }  
  80.         return true;  
  81.     }  
  82.       
  83.     /** 
  84.      * 上传文件 
  85.      * @param string $remote 远程存放地址 
  86.      * @param string $local 本地存放地址 
  87.      */  
  88.     public function put($remote, $local) {  
  89.         if (!$this->link) {  
  90.             $this->err_code = 2;  
  91.             return false;  
  92.         }   
  93.         $dirname = pathinfo($remote,PATHINFO_DIRNAME);  
  94.         if (!$this->chdir($dirname)) {  
  95.             $this->mkdir($dirname);  
  96.         }  
  97.         if (@ftp_put($this->link, $remote, $local, $this->mode)) {  
  98.             return true;  
  99.         } else {  
  100.             $this->err_code = 7;  
  101.             return false;  
  102.         }  
  103.     }  
  104.       
  105.     /** 
  106.      * 删除文件夹 
  107.      * @param string $dirname  目录地址 
  108.      * @param boolean $enforce 强制删除 
  109.      */  
  110.     public function rmdir($dirname, $enforce = false) {  
  111.         if (!$this->link) {  
  112.             $this->err_code = 2;  
  113.             return false;  
  114.         }   
  115.         $list = $this->nlist($dirname);  
  116.         if ($list && $enforce) {  
  117.             $this->chdir($dirname);  
  118.             foreach ($list as $v) {  
  119.                 $this->f_delete($v);  
  120.             }  
  121.         } elseif ($list && !$enforce) {  
  122.             $this->err_code = 3;  
  123.             return false;  
  124.         }  
  125.         @ftp_rmdir($this->link, $dirname);  
  126.         return true;  
  127.     }  
  128.       
  129.     /** 
  130.      * 删除指定文件 
  131.      * @param string $filename 文件名 
  132.      */  
  133.     public function f_delete($filename) {  
  134.         if (!$this->link) {  
  135.             $this->err_code = 2;  
  136.             return false;  
  137.         }   
  138.         if (@ftp_delete($this->link, $filename)) {  
  139.             return true;  
  140.         } else {  
  141.             $this->err_code = 4;  
  142.             return false;  
  143.         }  
  144.     }  
  145.       
  146.     /** 
  147.      * 返回给定目录的文件列表 
  148.      * @param string $dirname  目录地址 
  149.      * @return array 文件列表数据 
  150.      */  
  151.     public function nlist($dirname) {  
  152.         if (!$this->link) {  
  153.             $this->err_code = 2;  
  154.             return false;  
  155.         }   
  156.         if ($list = @ftp_nlist($this->link, $dirname)) {  
  157.             return $list;  
  158.         } else {  
  159.             $this->err_code = 5;  
  160.             return false;  
  161.         }  
  162.     }  
  163.       
  164.     /** 
  165.      * 在 FTP 服务器上改变当前目录 
  166.      * @param string $dirname 修改服务器上当前目录 
  167.      */  
  168.     public function chdir($dirname) {  
  169.         if (!$this->link) {  
  170.             $this->err_code = 2;  
  171.             return false;  
  172.         }   
  173.         if (@ftp_chdir($this->link, $dirname)) {  
  174.             return true;  
  175.         } else {  
  176.             $this->err_code = 6;  
  177.             return false;  
  178.         }  
  179.     }  
  180.       
  181.     /** 
  182.      * 获取错误信息 
  183.      */  
  184.     public function get_error() {  
  185.         if (!$this->err_code) return false;  
  186.         $err_msg = array(  
  187.             '1'=>'Server can not connect',  
  188.             '2'=>'Not connect to server',  
  189.             '3'=>'Can not delete non-empty folder',  
  190.             '4'=>'Can not delete file',  
  191.             '5'=>'Can not get file list',  
  192.             '6'=>'Can not change the current directory on the server',  
  193.             '7'=>'Can not upload files'  
  194.         );  
  195.         return $err_msg[$this->err_code];  
  196.     }  
  197.       
  198.     /** 
  199.      * 检测目录名 
  200.      * @param string $url 目录 
  201.      * @return 由 / 分开的返回数组 
  202.      */  
  203.     private function ck_dirname($url) {  
  204.         $url = str_replace('\\', '/', $url);  
  205.         $urls = explode('/', $url);  
  206.         return $urls;  
  207.     }  
  208.       
  209.     /** 
  210.      * 关闭FTP连接 
  211.      */  
  212.     public function close() {  
  213.         return @ftp_close($this->link);  
  214.     }  
  215. }   

 阿斯

相关文章
|
XML Java 数据格式
java FTP 工具类 同步文件夹 下载文件..等操作(FtpHelper 需要commons-net-3.5.jar)
package com.esb.component; import java.io.BufferedOutputStream; import java.
2214 0
|
C# 数据安全/隐私保护 Windows
C# FTP操作类
public class FtpWeb { string ftpRemotePath; string ftpUserID; st...
598 0
|
.NET 数据安全/隐私保护
ASP.NET实现FTP文件上载类
ASP.NET实现FTP文件上载类 成功之门今朝网络  http://www.109999.com   时间: 2005-7-23 22:55:05 来源:天极yesky  编辑:莫非     文/子夜编译    最近,分配给我一个项目,这个项目已成功运转,在这个项目中我需要允许我们的用户经由XML和FTP向另一个公司输出它们的数据。
695 0
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统搭建FTP服务器教程】
现在,你已经成功在Ubuntu系统上搭建了FTP服务器。你可以使用FTP客户端连接到你的FTP服务器,并上传、下载文件。注意,为了安全起见,建议配置SSL/TLS加密以保护数据传输。
63 0
|
5月前
|
Unix Shell Linux
客户端如何查找FTP服务器的用户名和密码
客户端如何查找FTP服务器的用户名和密码
|
6月前
|
存储 网络协议 文件存储
手把手教你搭建Serv-U FTP服务器共享文件并实现外网远程访问「无公网IP」
手把手教你搭建Serv-U FTP服务器共享文件并实现外网远程访问「无公网IP」
|
4月前
|
网络协议 安全 Linux
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
82 0