PHP的FTP学习(一)


Posted in PHP onOctober 09, 2006

By Vikram Vaswani
Melonfire
November 07, 2000
   我们是一群PHP的忠实FANS,我们因各种不同的原因使用它-WEB站点的开发,画图,数据库的联接等 -我们发现,它非常的友好,强大而且易于使用……  
你可能已经看到PHP是怎样被用于创建GIF和JPEG图像,从数据库中动态的获取信息等等,但这只是冰山的一角---最新版本的PHP拥有着强大的文件传输功能。
在这篇教程里,我将向你展示FTP怎样通过HTTP和FTP联接来传输文件,同时也会有一些简单的程序代码,跟我来吧!

首先,你应该知道PHP是通过HTTP和FTP联接来传输文件的。通过HTTP上传文件早在PHP3中就已经出现,现在,新的FTP函数已经在新的PHP版本中出现了!
开始之前,你需要确信你的PHP支持FTP,你可以通过以下代码查知:

--------------------------------------------------------------------------------
<?

phpinfo();

?>
--------------------------------------------------------------------------------
检查输出结果,有一“Additional Modules”区,这里列示了你的PHP支持的模块;如果你没发现FTP模块,你最好重新安装PHP,并添加FTP支持!

先让我们来看看一个典型的FTP任务是怎样完成的吧!
--------------------------------------------------------------------------------
$ ftp ftp.server.com
Connected to ftp.server.com
220 server.com FTP server ready.
Name (server:john): john
331 Password required for john.
Password:
230 User john logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr-xr-x  5 john   users        3072 Nov  2 11:03 .
drwxr-xr-x  88 root     root         2048 Nov  1 23:26 ..
drwxr--r--   2 john   users        1024 Oct  5 13:26 bin
drwx--x--x   8 john   users        1024 Nov  2 10:59 public_html
drwxr--r--   4 john   users        1024 Nov  2 11:26 tmp
-rw-r--r--   1 john   users     2941465 Oct  9 17:21 data.zip
226 Transfer complete.
ftp> bin
200 Type set to I.
ftp> get data.zip
local: data.zip remote: data.zip
200 PORT command successful.
150 Opening BINARY mode data connection for data.zip(2941465 bytes).
226 Transfer complete.
ftp> bye
221 Goodbye.
--------------------------------------------------------------------------------
你可以看到,进程明显被分为几段:联接(与FTP服务器建立联接)、验证(确定用户是否有权力进入系统)、传输(这里包括列目录,上传或下载文件)、取消联接。

使用PHP来FTP的步骤
建立一个PHP的FTP联接必须遵守以下基本步骤:打开一个联接 - 发出认证信息 - 使用PHP函数操纵目录和传输文件。
以下具体实现:
--------------------------------------------------------------------------------
<?

// 联接FTP服务器
$conn = ftp_connect("ftp.server.com");

// 使用username和password登录
ftp_login($conn, "john", "doe");

// 获取远端系统类型
ftp_systype($conn);

// 列示文件
$filelist = ftp_nlist($conn, ".");

// 下载文件
ftp_get($conn, "data.zip", "data.zip", FTP_BINARY);

// 关闭联接
ftp_quit($conn);

?>
--------------------------------------------------------------------------------
让我们一步步的来:
为了初结化一个FTP联接,PHP提供了ftp_connect()这个函数,它使用主机名称和端口作为参数。在上面的例子里,主机名字为“ftp.server.com”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。
联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用。
--------------------------------------------------------------------------------
<?

// connect to FTP server
$conn = ftp_connect("ftp.server.com");

?>
--------------------------------------------------------------------------------
一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。你可以看到,这个函数ftp_login()使用了ftp_connect()函数传来的handle,以确定用户名和密码能被提交到正确的服务器。
--------------------------------------------------------------------------------
<?

// log in with username and password
ftp_login($conn, "john", "doe");

?>
--------------------------------------------------------------------------------
这时,你就能够做你想做的事情了,具体在下一部分讲:

做完你想做的事后,千万要记住使用ftp_quit()函数关闭你的FTP联接

--------------------------------------------------------------------------------
<?

// close connection
ftp_quit($conn);

?>

PHP 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
优化使用mysql存储session的php代码
Jan 10 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
ThinkPHP的URL重写问题
Jun 22 PHP
PHP引用返回用法示例
May 28 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
PHP 类与构造函数解析
Feb 06 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
PHP VS ASP
Oct 09 #PHP
用PHP来写记数器(详细介绍)
Oct 09 #PHP
杏林同学录(三)
Oct 09 #PHP
福利彩票幸运号码自动生成器
Oct 09 #PHP
一个用php3编写的简单计数器
Oct 09 #PHP
php4的session功能评述(三)
Oct 09 #PHP
php4的session功能评述(一)
Oct 09 #PHP
You might like
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python处理JSON数据并生成条形图
2016/08/05 Python
python 连接sqlite及简单操作
2017/06/30 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python logging设置level失败的解决方法
2020/02/19 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
python中if及if-else如何使用
2020/06/02 Python
Python 如何查找特定类型文件
2020/08/17 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Java面向对象面试题
2016/12/26 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
电焊工岗位职责
2014/03/06 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
个人租房协议书
2014/04/09 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
机关保密工作承诺书
2015/05/04 职场文书
对公司的意见和建议
2015/06/04 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python