PHP的FTP学习(一)


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);
?>
--------------------------------------------------------------------------------
登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。

ftp_pwd()
如果你想知道你当前所在的目录时,你就要用到这个函数了。
--------------------------------------------------------------------------------
<?
// get current location
$here = ftp_pwd($conn);
?>

--------------------------------------------------------------------------------
万一你需要知道服务器端运行的是什么系统呢?
ftp_systype()正好提供给你这方面的信息。
--------------------------------------------------------------------------------
<?
// get system type
$server_os = ftp_systype($conn);
?>
--------------------------------------------------------------------------------
关于被动模式(PASV)的开关,PHP也提供了这样一个函数,它能打开或关闭PASV(1表示开)
--------------------------------------------------------------------------------
<?
// turn PASV on
ftp_pasv($conn, 1);
?>
--------------------------------------------------------------------------------

现在,你已经知道你在“哪里”和“谁”跟你在一起了吧,现在我们开始在目录中逛逛--实现这一功能的是ftp_chdir()函数,它接受一个目录名作为参数。
--------------------------------------------------------------------------------
<?
// change directory to "public_html"
ftp_chdir($conn, "public_html");
?>
--------------------------------------------------------------------------------

本文作者:



相关阅读:
JavaScript 原型学习总结
在线编辑器的实现原理(兼容IE和FireFox)
ORACLE 10G使用Exp程序导出整个数据库
web前端开发经验浅谈:分享看过的书籍和成长过程
HTML5与数据库API核心规范
div+css与xhtml+css是什么意思?
Javascript中的浅拷贝和深拷贝
语义化的网页 XHTML语义化标记
js单行消息滚动代码,可添加无数个
关于Mozilla浏览器不支持innerText的解决办法
Linux下Apache与Tomcat整合的简单方法
img标签中alt和title属性的正确使用
JavaScript 文本域字体大小选择功能
fleaphp rolesNameField bug解决方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 跨过门槛 家长会上的演讲稿作文800字 冬天的颜色的作文600字 恐龙帝国读后感 我的家乡小学作文 读钟世才同志先进事迹有感 团支书竞选演讲稿 办公室慵懒散问题整治工作总结范文 民族的希望 医学生寒假实习报告 小学三年级作文650字:三顾茅庐新论 【精品】房地产销售年终总结 第一场雪的惊喜 记忆在夏天 描写饰品的好词 做一个有意境的女人 仓储合同书 长庆春 2016年生产部工作总结范文大全 想很多,话很短。 正能量晚安心语:我们的过去,成就了如今的我们,无需 我的邻居作文50字 读《教育心理学》的心得体会 最新学校军训活动总结 我从梦中醒过来 我最喜欢的玩具-“皮皮熊”350字 常用入团志愿书 学校少年宫建设实施方案 高二地理教学反思 带英文的个性签名 夜,还是那样的静,在天国的你是否感到害怕 七嫂 科学500字作文 团总支学通社工作总结 理想信念教育思想汇报 《揭示XXXXXX背后丑恶嘴脸》经典语录 《虞美人》(教案)df_xue_(转载) 硕鼠不是大老鼠 那一刻,我长大了羞作文500字 小学三年级作文450字:找不到家的垃圾人 雪野 2015大力“兴五风、创造新业绩”活动的安排意见-范文 MySister-我的妹妹,MySister-我的妹妹范文 我爱秋天_关于描写球天的小学生作文300在 妈妈请原谅我作文(3篇) 关于施工质量的工作报告 乔布斯生活中的三个故事 信用社副领导述职报告 乐于助人——雷锋车作文350字 县创先争优活动剖析整改

Copyright © 2016 phpStudy |