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 相关文章推荐
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
php绘制圆形的方法
Jan 24 PHP
PHP技术开发微信公众平台
Jul 22 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
PHP中number_format()函数的用法讲解
Apr 08 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中使用Oracle数据库(6)
2006/10/09 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
event.srcElement+表格应用
2006/08/29 Javascript
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
Python显示进度条的方法
2014/09/20 Python
简单的Python的curses库使用教程
2015/04/11 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python探索之SocketServer详解
2017/10/28 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
《画杨桃》教学反思
2014/04/13 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
小学庆六一活动总结
2014/08/28 职场文书
领导班子整改方案
2014/10/25 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书