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 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
JavaScript实现滚动栏效果的方法
Apr 27 PHP
php实现源代码加密的方法
Jul 11 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
php取出数组单个值的方法
Mar 12 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 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在Web开发领域的优势
2006/10/09 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
Python中set与frozenset方法和区别详解
2016/05/23 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
python实现从ftp服务器下载文件
2020/03/03 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
暇步士官网:Hush Puppies
2016/09/22 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
测试驱动开发的主要步骤是什么
2014/12/10 面试题
中专生求职自荐信范文
2013/12/22 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技