PHP技术论坛

搜索
查看: 1455|回复: 0
打印 上一主题 下一主题

PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )

[复制链接]

83

主题

88

帖子

411

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
411
跳转到指定楼层
楼主
发表于 2016-2-20 14:05:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /**
  2. * 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 )
  3. * 时间:2006/5/9
  4. * 作者:欣然随风
  5. * QQ:276624915
  6. */
  7. class class_ftp
  8. {
  9.     public $off; // 返回操作状态(成功/失败)
  10.     public $conn_id; // FTP连接
  11.     /**
  12.      * 方法:FTP连接
  13.      * @FTP_HOST -- FTP主机
  14.      * @FTP_PORT -- 端口
  15.      * @FTP_USER -- 用户名
  16.      * @FTP_PASS -- 密码
  17.      */
  18.     function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS)
  19.     {
  20.         $this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败");
  21.         @ftp_login($this->conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败");
  22.         @ftp_pasv($this->conn_id,1); // 打开被动模拟
  23.     }
  24.     /**
  25.      * 方法:上传文件
  26.      * @path -- 本地路径
  27.      * @newpath -- 上传路径
  28.      * @type -- 若目标目录不存在则新建
  29.      */
  30.     function up_file($path,$newpath,$type=true)
  31.     {
  32.         if($type) $this->dir_mkdirs($newpath);
  33.         $this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY);
  34.         if(!$this->off) echo "文件上传失败,请检查权限及路径是否正确!";
  35.     }
  36.     /**
  37.      * 方法:移动文件
  38.      * @path -- 原路径
  39.      * @newpath -- 新路径
  40.      * @type -- 若目标目录不存在则新建
  41.      */
  42.     function move_file($path,$newpath,$type=true)
  43.     {
  44.         if($type) $this->dir_mkdirs($newpath);
  45.         $this->off = @ftp_rename($this->conn_id,$path,$newpath);
  46.         if(!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!";
  47.     }
  48.     /**
  49.      * 方法:复制文件
  50.      * 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径
  51.      * @path -- 原路径
  52.      * @newpath -- 新路径
  53.      * @type -- 若目标目录不存在则新建
  54.      */
  55.     function copy_file($path,$newpath,$type=true)
  56.     {
  57.         $downpath = "c:/tmp.dat";
  58.         $this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下载
  59.         if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!";
  60.         $this->up_file($downpath,$newpath,$type);
  61.     }
  62.     /**
  63.      * 方法:删除文件
  64.      * @path -- 路径
  65.      */
  66.     function del_file($path)
  67.     {
  68.         $this->off = @ftp_delete($this->conn_id,$path);
  69.         if(!$this->off) echo "文件删除失败,请检查权限及路径是否正确!";
  70.     }
  71.     /**
  72.      * 方法:生成目录
  73.      * @path -- 路径
  74.      */
  75.     function dir_mkdirs($path)
  76.     {
  77.         $path_arr = explode('/',$path); // 取目录数组
  78.         $file_name = array_pop($path_arr); // 弹出文件名
  79.         $path_div = count($path_arr); // 取层数
  80.         foreach($path_arr as $val) // 创建目录
  81.         {
  82.             if(@ftp_chdir($this->conn_id,$val) == FALSE)
  83.             {
  84.                 $tmp = @ftp_mkdir($this->conn_id,$val);
  85.                 if($tmp == FALSE)
  86.                 {
  87.                     echo "目录创建失败,请检查权限及路径是否正确!";
  88.                     exit;
  89.                 }
  90.                 @ftp_chdir($this->conn_id,$val);
  91.             }
  92.         }
  93.         for($i=1;$i=$path_div;$i++) // 回退到根
  94.         {
  95.             @ftp_cdup($this->conn_id);
  96.         }
  97.     }
  98.     /**
  99.      * 方法:关闭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. ?>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|PHP  

GMT+8, 2024-4-30 00:16 , Processed in 0.065117 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表