(实用篇)PHP ftp上传文件操作类

(实用篇)PHP ftp上传文件操作类

<?php
/**
 * 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 )
 */
class class_ftp
{
	public $off; // 返回操作状态(成功/失败)
	public $conn_id; // FTP连接
	const FTP_HOST='*.*.*.*';
	const FTP_PORT='21';
	const FTP_USER='*******';
	const FTP_PASS='*******';
	/**
	* 方法:FTP连接
	* @FTP_HOST -- FTP主机
	* @FTP_PORT -- 端口
	* @FTP_USER -- 用户名
	* @FTP_PASS -- 密码
	*/
	function __construct()
	{
	$this->conn_id = @ftp_connect(self::FTP_HOST,self::FTP_PORT) or die("FTP服务器连接失败");
	@ftp_login($this->conn_id,self::FTP_USER,self::FTP_PASS) or die("FTP服务器登陆失败");
	@ftp_pasv($this->conn_id,1); // 打开被动模拟
	}
	/**
	* 方法:上传文件
	* @path -- 本地路径
	* @newpath -- 上传路径
	* @type -- 若目标目录不存在则新建
	 */
	 function up_file($path,$newpath,$type=true)
	 {
	 var_dump($this->conn_id);exit;
	 if($type) $this->dir_mkdirs($newpath);
	 $this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY);
	 if(!$this->off) echo "文件上传失败,请检查权限及路径是否正确!";
	 }
	 /**
	 * 方法:移动文件
	 * @path -- 原路径
	 * @newpath -- 新路径
	 * @type -- 若目标目录不存在则新建
     */
	 function move_file($path,$newpath,$type=true)
	 {
	 if($type) $this->dir_mkdirs($newpath);
	 $this->off = @ftp_rename($this->conn_id,$path,$newpath);
	 if(!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!";
	 }
	 /**
	 * 方法:复制文件
	 * 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径
	 * @path -- 原路径
	 * @newpath -- 新路径
	 * @type -- 若目标目录不存在则新建
	 */
	 function copy_file($path,$newpath,$type=true)
	 {
	 $downpath = "c:/tmp.dat";
	 $this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下载
	 if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!";
	 $this->up_file($downpath,$newpath,$type);
	 }
	 /**
	 * 方法:删除文件
	 * @path -- 路径
	 */
	 function del_file($path)
	 {
	 $this->off = @ftp_delete($this->conn_id,$path);
	 if(!$this->off) echo "文件删除失败,请检查权限及路径是否正确!";
	 }
	 /**
	 * 方法:生成目录
	 * @path -- 路径
	 */
	 function dir_mkdirs($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);
	 }
	 }
	 /**
	 * 方法:关闭FTP连接
	 	*/
	 		function close()
	 		{
	 		@ftp_close($this->conn_id);
	 }
	 }// class class_ftp end
	 
	 /************************************** 测试 ***********************************
	 $ftp = new class_ftp('192.168.100.143',21,'user','pwd'); // 打开FTP连接
	 //$ftp->up_file('aa.txt','a/b/c/cc.txt'); // 上传文件
	 //$ftp->move_file('a/b/c/cc.txt','a/cc.txt'); // 移动文件
	 //$ftp->copy_file('a/cc.txt','a/b/dd.txt'); // 复制文件
	 //$ftp->del_file('a/b/dd.txt'); // 删除文件
	 $ftp->close(); // 关闭FTP连接
	 ******************************************************************************/
?>

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/1416.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2016年10月22日 00:31
下一篇 2016年10月22日

相关推荐

  • PHP与Elasticsearch的集成

    PHP与Elasticsearch的集成随着大数据和数据挖掘的发展,搜索引擎已经成为了我们生活中必不可少的工具。而Elasticsearch就是一个快速、开放、可扩展的搜索和分析引擎,它能够轻松地进行全文检索、数据分析和实时数据…

    2023年5月19日
    01
  • PHP中的项目实施。

    随着互联网、移动互联网的快速发展,越来越多的企业和个人都开始关注开发自己的网站、应用程序和移动端应用等。而其中一门开发语言PHP也逐渐成为了开发者们的选择,由于其开发成本低、使用便捷、跨平台、跨数据库等…

    2023年5月28日
    00
  • PHP之钩子

    PHP 提供的钩子PHP 和 Zend Engine 为扩展提供了许多不同的钩子,这些扩展允许扩展开发人员以 PHP userland 无法提供的方式控制 PHP 运行时。本章将展示各种钩子和从扩展钩子到它们的常见用例。钩子到 PHP 功能的一…

    2022年6月13日
    0153
  • PHP8.0中的HTTP服务器库:React

    随着互联网的发展,Web应用的重要性越来越受到关注。而其中的HTTP服务器是Web应用的基础之一。在PHP领域中,React是一个优秀的HTTP服务器库,它为我们提供了非常便捷的开发方式。本文将介绍React的基本概念和使用方…

    2023年5月19日
    03
  • 一分钟了解php中yield的用法()

    php中yield的用法,我相信大部分人依旧是不会用,甚至是不知道什么是yield,那么本篇文章就是来告诉大家有关于yield的一些问题以及如何用yield去解决我们在Php中遇到的问题。yield 解决的问题解决运行内存的瓶颈,p…

    2023年3月29日
    01
  • 如何用PHP获取referer判断来路防止非法访问

    本篇文章给大家介绍如何用PHP获取referer判断来路防止非法访问?有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。下载页面down.php 的php代码 现在我发现,用迅雷,谷歌浏览器直接打开,就能输出…

    2023年3月29日
    06
  • 如何利用PHP开发商城的秒杀功能。

    随着电子商务的发展,商城的竞争日益激烈,为了吸引用户,商城普遍采用了秒杀活动的形式。然而,秒杀活动需要具备高并发、高可用等特性,这对开发者的技术要求很高。在本篇文章中,我们将介绍如何利用PHP开发商城的…

    2023年5月23日
    01
  • php如何调用phantomJS截图

    php调用phantomJS截图知识储备*unix系统安装phantomjs,权限相关知识基本JavaScript语法知识php exec函数调用REPL phantomjsphantomjs js截图文档 http://javascript.ruanyifeng.com/tool/phantomjs.html代码(php 代…

    2022年6月23日
    0169

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息