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 相关文章推荐
php 破解防盗链图片函数
Dec 09 PHP
PHP 危险函数解释 分析
Apr 22 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
PHP6新特性分析
Mar 03 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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打开文件fopen函数的使用说明
2013/07/05 PHP
js 3种归并操作的实例代码
2013/10/30 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python出现segfault错误解决方法
2016/04/16 Python
python实现SMTP邮件发送功能
2020/06/16 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
详解python中docx库的安装过程
2019/11/08 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
个人委托书范本
2014/04/02 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
诉讼授权委托书
2014/10/15 职场文书
2014年司法所工作总结
2014/11/22 职场文书
公务员政审材料范文
2014/12/23 职场文书
信访工作个人总结
2015/03/03 职场文书
校园环境卫生倡议书
2015/04/29 职场文书