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 相关文章推荐
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
php去除重复字的实现代码
Sep 16 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
Jun 30 PHP
php给图片加文字水印
Jul 31 PHP
php封装的验证码类分享
Feb 26 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP实现文件上传操作和封装
Mar 04 PHP
PHP实现本地图片转base64格式并上传
May 29 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
ES6新特性一: let和const命令详解
2017/04/20 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
python实现simhash算法实例
2014/04/25 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
python实现识别相似图片小结
2016/02/22 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
pandas object格式转float64格式的方法
2018/04/10 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
利用python画出折线图
2018/07/26 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
SQL中where和having的区别
2012/06/17 面试题
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
师范教师毕业鉴定
2014/01/13 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
企业文化标语口号
2014/06/09 职场文书
基层党员对照检查材料
2014/09/24 职场文书
村党组织公开承诺书
2015/04/30 职场文书
班级管理经验交流材料
2015/11/02 职场文书
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏