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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
小谈php正则提取图片地址
Mar 27 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php上传文件常见问题总结
Feb 03 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
JS随机密码生成算法
2019/09/23 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
python中的sort方法使用详解
2014/07/25 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
高三英语教学反思
2014/01/13 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
销售提升方案
2014/06/07 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
2015年科协工作总结
2015/05/19 职场文书
python字符串常规操作大全
2021/05/02 Python
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL