0

0

最新最全的PHP FTP操作类,来自EaglePHP框架

PHP中文网

PHP中文网

发布时间:2016-05-25 17:04:56

|

1496人浏览过

|

来源于php中文网

原创

最新最全的php ftp操作类,来自eaglephp框架

 0)
		{
			foreach ($list as $k=>$v)
			{
				$path = "{$directory}/{$v}";
				if(self::isDir($path)) self::rmdir($path);
				else self::delete($path);
			}
		}
		return ftp_rmdir(self::$resource, $directory);
	}
	
	
	/**
	 * 
	 * 连续获取/发送文件(non-blocking)
	 * 以不分块的方式连续获取/发送一个文件。 
	 * 
	 * @return int 返回常量 FTP_FAILED 或 FTP_FINISHED 或 FTP_MOREDATA
	 */
	public static function nbContinue()
	{
		return ftp_nb_continue(self::$resource);
	}
	
	
	/**
	 * 从检索FTP服务器上的文件并将其写入一个打开的文件(非阻塞)
	 * 
	 * @param resource $handle
	 * @param string $remote_file
	 * @param int $mode
	 * @param int $resumepos
	 * @return int 返回ftp_failed或ftp_finished或ftp_moredata
	 */
	public static function nbFget($handle, $remote_file, $mode=FTP_ASCII, $resumepos=0)
	{
		return ftp_nb_fget(self::$resource, $handle, $remote_file, $mode, $resumepos);
	}
	
	
	/**
	 * 
	 * 从打开的文件到FTP服务器上的文件(非阻塞)
	 * 
	 * @param unknown_type $remote_file
	 * @param unknown_type $handle
	 * @param unknown_type $mode
	 * @param unknown_type $startpos
	 */
	public static function nbFput($remote_file, $handle, $mode=FTP_ASCII, $startpos=0)
	{
		return ftp_nb_fput(self::$resource, $remote_file, $handle, $mode, $startpos);
	}
	
	
	
	/**
	 * 
	 * 从 FTP 服务器上获取文件并写入本地文件(non-blocking)
	 * 
	 * @param string $local_file
	 * @param string $remote_file
	 * @param int $mode
	 * @param int $resumepos
	 * @return int  返回 FTP_FAILED,FTP_FINISHED 或 FTP_MOREDATA
	 */
	public static function nbGet($local_file, $remote_file, $mode=FTP_ASCII, $resumepos=0)
	{
		return ftp_nb_get(self::$resource, $local_file, $remote_file, $mode, $resumepos);
	}
	
	
	/**
	 * 
	 * 存储一个文件至 FTP 服务器(non-blocking)
	 * 
	 * @param string $remote_file
	 * @param string $local_file
	 * @param int $mode
	 * @param int $startpos
	 * @return int  返回 FTP_FAILED,FTP_FINISHED 或 FTP_MOREDATA
	 */
	public static function nbPut($remote_file, $local_file, $mode=FTP_ASCII, $startpos=0)
	{
		return ftp_nb_put(self::$resource, $remote_file, $local_file, $mode, $startpos);
	}
	
	
	/**
	 *
	 * 返回给定目录的文件列表
	 * 
	 * @param string $directory
	 * @return array
	 */
	public static function nlist($directory)
	{
		return ftp_nlist(self::$resource, $directory);
	}
	
	
	/**
	 * 
	 * 返回当前 FTP 被动模式是否打开
	 * 在被动模式打开的情况下,数据的传送由客户机启动,而不是由服务器开始。 
	 * 
	 * @param bool $pasv
	 * @return bool
	 */
	public static function pasv($pasv)
	{
		return ftp_pasv(self::$resource, $pasv);
	}
	
	
	/**
	 * 
	 * 返回当前目录名
	 * 
	 * @return string
	 */
	public static function pwd()
	{
		return ftp_pwd(self::$resource);
	}
	
	
	/**
	 * 
	 * 返回指定目录下文件的详细列表
	 * 将执行 FTP LIST 命令,并把结果做为一个数组返回
	 * 
	 * @param string $directory
	 * @return array
	 */
	public static function rawlist($directory)
	{
		return ftp_rawlist(self::$resource, $directory);
	}
	
	
	/**
	 * 
	 * 更改 FTP 服务器上的文件或目录名
	 * 
	 * @param string $oldname
	 * @param string $newname
	 * @return bool
	 */
	public static function rename($oldname, $newname)
	{
		return ftp_rename(self::$resource, $oldname, $newname);
	}
	
	
	/**
	 * 
	 * 向服务器发送 SITE 命令
	 * 
	 * @param string $command
	 * @return bool
	 */
	public static function site($command)
	{
		return ftp_site(self::$resource, $command);
	}
	
	
	/**
	 * 
	 * 返回指定文件的大小
	 * 
	 * @param string $remote_file
	 * @return int  如果指定文件不存在或发生错误,则返回 -1。有些 FTP 服务器可能不支持此特性。 
	 */
	public static function size($remote_file)
	{
		return ftp_size(self::$resource, $remote_file);
	}
	
	
	/**
	 * 
	 * 打开一个安全的ssl-ftp连接
	 * 注:此函数需要OpenSSL扩展库支持
	 * 
	 * @param string $host
	 * @param int $port
	 * @param int $timeout
	 * @return resource
	 */
	public static function sslConnect($host, $port=21, $timeout=90)
	{
		return ftp_ssl_connect($host, $port, $timeout);
	}
	
	
	/**
	 * 
	 * 返回远程 FTP 服务器的操作系统类型
	 * 
	 * @return string
	 */
	public static function systype()
	{
		return ftp_systype(self::$resource);
	}
	
	
	/**
	 * 
	 * 发送一个配置命令远程FTP服务器对上传的文件分配空间。
	 * 注:许多FTP服务器不支持这个命令。
	 *  
	 * @param int $filesize 分配的字节数。
	 * @param string $result 服务器的响应文本表示将通过引用返回的结果如果提供一个变量。
	 * @return bool
	 */
	public static function alloc($filesize,  &$result='')
	{
		return ftp_alloc(self::$resource, $filesize, $result);
	}
	
	
	/**
	 * 
	 * 判断是否为目录
	 * 
	 * @param string $remote_file
	 * @return bool
	 */
	public static function isDir($remote_file)
	{
		return (self::size($remote_file) === -1 && self::rawlist($remote_file) !== false) ? true : false;
	}
	
	
	/**
	 * 
	 * 根据文件后缀获取ftp传输模式
	 * 
	 * @param string $file
	 * @return string
	 */
	private static function _getTransferMode($file)
	{
		$extArr = array('txt', 'text', 'php', 'phps', 'php4', 'js', 'css', 'htm', 'html', 'phtml', 'shtml', 'log', 'xml');
		if(($pos = strrpos($file, '.')) === false) return FTP_ASCII;
		$ext = substr($file, $pos + 1);
		return in_array($ext, $extArr) ? FTP_ASCII : FTP_BINARY;
	}
	
	
	/**
	 * 
	 * 上传文件至FTP服务器
	 * 
	 * @param string $local_file
	 * @param string $remote_file
	 * @param int $mode
	 * @param int $permissions
	 * @return void
	 */
	public static function upload($local_file, $remote_file, $mode=null, $permissions = null)
	{
		if(!file_exists($local_file)) throw_exception('ftp_no_source_file:'.$local_file);
		$mode = is_null($mode) ? self::_getTransferMode($local_file) : $mode;
		if(!self::put($remote_file, $local_file, $mode)) throw_exception("ftp_unable_to_upload:local_file[{$local_file}]/remote_file[{$remote_file}]");
		if(!is_null($permissions)) self::chmod($permissions, $remote_file);
		return true;
	}
	
	
	/**
	 * 
	 * 上传目录至FTP服务器
	 * 注:上传的中目录或文件名不能包含中文
	 * 
	 * @param string $local_dir
	 * @param string $remote_dir
	 * @param int $mode
	 * @param int $permissions
	 */
	public static function uploadDir($local_dir, $remote_dir, $permissions = null)
	{
		$list = Folder::read($local_dir);
		if(count($list) > 0)
		{
			if(!self::isDir($remote_dir)) self::mkdir($remote_dir, $permissions);
			foreach ($list as $k=>$v)
			{
				$local_path = $local_dir.'/'.$v;
				$remote_path = $remote_dir.'/'.$v;
				if(Folder::isDir($local_path)) self::uploadDir($local_path, $remote_path);
				else self::upload($local_path, $remote_path, null, $permissions);
			}
			return true;
		}
		return false;
	}
	
	
	/**
	 * 
	 * 从ftp下载文件至本地
	 * 
	 * @param string $remote_file
	 * @param string $local_file
	 * @param int $mode
	 * @return bool
	 */
	public static function download($remote_file, $local_file, $mode = null)
	{
		$mode = is_null($mode) ? self::_getTransferMode($remote_file) : $mode;
		if(!self::get($local_file, $remote_file, $mode)) throw_exception("ftp_unable_to_download:local_file[{$local_file}]-remote_file[{$remote_file}]");
		return true;
	}
	
	
	/**
	 * 
	 * 下载ftp上的文件夹至本地
	 * 
	 * @param string $remote_dir
	 * @param string $local_dir
	 */
	public static function downloadDir($remote_dir, $local_dir)
	{
		$list = self::nlist($remote_dir);
		if(count($list) > 0)
		{
			if(!Folder::isDir($local_dir)) mk_dir($local_dir);
			foreach ($list as $k=>$v)
			{
				$remote_path = $remote_dir.'/'.$v;
				$local_path = $local_dir.'/'.$v;
				if(self::isDir($remote_path)) self::downloadDir($remote_path, $local_path);
				else self::download($remote_path, $local_path);
			}
			return true;
		}
		return false;
	}
	
	
}



测试代码:
Ftp::connect('192.168.16.188', 'test', '123456');
//$a = Ftp::get('d:/t.txt', 'php.ini');
//$a = Date::format('Y-m-d H:i:s', Ftp::mdtm('php.ini'));
//$a = Ftp::mkdir('maojian');
//$a = Ftp::nlist('test');
//$a = Ftp::pwd();
//$a = Ftp::rawlist('bak');
//$a = Ftp::rename('1111', 'aaa_ftp_test');
//$a = Ftp::mkdir('/qq/1111/2222/');
//$a = Ftp::rmdir('hahaha');
//$a = Ftp::systype();
//$a = Ftp::isDir('aaa_ftp_test/tttt/');
//$a = Ftp::upload('d:/aaa.txt', 'aaa.txt');
//$a = Ftp::delete('aaa.txt');
//$a = Ftp::uploadDir('d:/TDDownload', '/hahaha');
//$a = Ftp::downloadDir('/hahaha', 'd:/aaaa');
var_dump($a);

                   

 以上就是最新最全的PHP FTP操作类,来自EaglePHP框架的内容,更多相关内容请关注PHP中文网(www.php.cn)!

易通cmseasy免费的企业建站程序2.0 UTF-8 build 201000510 中文版
易通cmseasy免费的企业建站程序2.0 UTF-8 build 201000510 中文版

易通(企业网站管理系统)是一款小巧,高效,人性化的企业建站程序.易通企业网站程序是国内首款免费提供模板的企业网站系统.§ 简约的界面及小巧的体积:后台菜单完全可以修改成自己最需要最高效的形式;大部分操作都集中在下拉列表框中,以节省更多版面来显示更有价值的数据;数据的显示以Javascript数组类型来输出,减少数据的传输量,加快传输速度。 § 灵活的模板标签及模

下载

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号