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 相关文章推荐
支持oicq头像的留言簿(一)
Oct 09 PHP
扩展你的 PHP 之入门篇
Dec 04 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
php反射类ReflectionClass用法分析
May 12 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 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 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP图片上传代码
2013/11/04 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
django创建css文件夹的具体方法
2020/07/31 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
.net面试题
2015/12/22 面试题
个人简历自我鉴定
2013/10/11 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
企业统计员岗位职责
2013/12/13 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
2022年四月新番
2022/03/15 日漫
Python实现简单得递归下降Parser
2022/05/02 Python