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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
php在数组中查找指定值的方法
Mar 17 PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
php事件驱动化设计详解
Nov 10 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 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获取淘宝分类id示例
2014/01/16 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
页面装载js及性能分析方法介绍
2014/03/21 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
Node.js简单入门前传
2017/08/21 Javascript
使用JS动态显示文本
2017/09/09 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python实现趣味图片字符化
2019/04/30 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
竞争上岗实施方案
2014/03/21 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
租房合同协议书
2014/04/09 职场文书
妇女工作先进事迹
2014/08/17 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
原生JS实现分页
2022/04/19 Javascript