PHP的FTP学习.docx

上传人:b****4 文档编号:5403760 上传时间:2022-12-16 格式:DOCX 页数:15 大小:22.02KB
下载 相关 举报
PHP的FTP学习.docx_第1页
第1页 / 共15页
PHP的FTP学习.docx_第2页
第2页 / 共15页
PHP的FTP学习.docx_第3页
第3页 / 共15页
PHP的FTP学习.docx_第4页
第4页 / 共15页
PHP的FTP学习.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

PHP的FTP学习.docx

《PHP的FTP学习.docx》由会员分享,可在线阅读,更多相关《PHP的FTP学习.docx(15页珍藏版)》请在冰豆网上搜索。

PHP的FTP学习.docx

PHP的FTP学习

PHP的FTP学习

我们是一群PHP的忠实FANS,我们因各种不同的原因使用它-WEB站点的开发,画图,数据库的联接等-我们发现,它非常的友好,强大而且易于使用……

你可能已经看到PHP是怎样被用于创建GIF和JPEG图像,从数据库中动态的获取信息等等,但这只是冰山的一角---最新版本的PHP拥有着强大的文件传输功能。

在这篇教程里,我将向你展示FTP怎样通过HTTP和FTP联接来传输文件,同时也会有一些简单的程序代码,跟我来吧!

首先,你应该知道PHP是通过HTTP和FTP联接来传输文件的。

通过HTTP上传文件早在PHP3中就已经出现,现在,新的FTP函数已经在新的PHP版本中出现了!

开始之前,你需要确信你的PHP支持FTP,你可以通过以下代码查知:

--------------------------------------------------------------------------------

phpinfo();

?

>

--------------------------------------------------------------------------------

检查输出结果,有一“AdditionalModules”区,这里列示了你的PHP支持的模块;如果你没发现FTP模块,你最好重新安装PHP,并添加FTP支持!

先让我们来看看一个典型的FTP任务是怎样完成的吧!

--------------------------------------------------------------------------------

$ftp

Connectedto

220FTPserverready.

Name(server:

john):

john

331Passwordrequiredforjohn.

Password:

230Userjohnloggedin.

RemotesystemtypeisUNIX.

Usingbinarymodetotransferfiles.

ftp>ls

200PORTcommandsuccessful.

150OpeningASCIImodedataconnectionfor/bin/ls.

drwxr-xr-x5johnusers3072Nov211:

03.

drwxr-xr-x88rootroot2048Nov123:

26..

drwxr--r--2johnusers1024Oct513:

26bin

drwx--x--x8johnusers1024Nov210:

59public_html

drwxr--r--4johnusers1024Nov211:

26tmp

-rw-r--r--1johnusers2941465Oct917:

21data.zip

226Transfercomplete.

ftp>bin

200TypesettoI.

ftp>getdata.zip

local:

data.zipremote:

data.zip

200PORTcommandsuccessful.

150OpeningBINARYmodedataconnectionfordata.zip(2941465bytes).

226Transfercomplete.

ftp>bye

221Goodbye.

--------------------------------------------------------------------------------

你可以看到,进程明显被分为几段:

联接(与FTP服务器建立联接)、验证(确定用户是否有权力进入系统)、传输(这里包括列目录,上传或下载文件)、取消联接。

使用PHP来FTP的步骤

建立一个PHP的FTP联接必须遵守以下基本步骤:

打开一个联接-发出认证信息-使用PHP函数操纵目录和传输文件。

以下具体实现:

--------------------------------------------------------------------------------

//联接FTP服务器

$conn=ftp_connect("");

//使用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()这个函数,它使用主机名称和端口作为参数。

在上面的例子里,主机名字为“”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。

联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用。

--------------------------------------------------------------------------------

//connecttoFTPserver

$conn=ftp_connect("");

?

>

--------------------------------------------------------------------------------

一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。

你可以看到,这个函数ftp_login()使用了ftp_connect()函数传来的handle,以确定用户名和密码能被提交到正确的服务器。

--------------------------------------------------------------------------------

//loginwithusernameandpassword

ftp_login($conn,"john","doe");

?

>

--------------------------------------------------------------------------------

这时,你就能够做你想做的事情了,具体在下一部分讲:

做完你想做的事后,千万要记住使用ftp_quit()函数关闭你的FTP联接

--------------------------------------------------------------------------------

//closeconnection

ftp_quit($conn);

?

>

--------------------------------------------------------------------------------

登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。

ftp_pwd()

如果你想知道你当前所在的目录时,你就要用到这个函数了。

--------------------------------------------------------------------------------

//getcurrentlocation

$here=ftp_pwd($conn);

?

>

--------------------------------------------------------------------------------

万一你需要知道服务器端运行的是什么系统呢?

ftp_systype()正好提供给你这方面的信息。

--------------------------------------------------------------------------------

//getsystemtype

$server_os=ftp_systype($conn);

?

>

--------------------------------------------------------------------------------

关于被动模式(PASV)的开关,PHP也提供了这样一个函数,它能打开或关闭PASV(1表示开)

--------------------------------------------------------------------------------

//turnPASVon

ftp_pasv($conn,1);

?

>

--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

//changedirectoryto"public_html"

ftp_chdir($conn,"public_html");

?

>

--------------------------------------------------------------------------------

如果你想回到你刚才所在的目录(父目录),ftp_cdup()能帮你实现你的愿望,这个函数能回到上一级目录。

--------------------------------------------------------------------------------

//gouponelevelinthedirectorytree

ftp_cdup($conn);

?

>

--------------------------------------------------------------------------------

你也能够建立或移动一个目录,这要使用ftp_mkdir()和ftp_rmdir()函数;注意:

ftp_mkdir()建立成功的话,就会返回新建立的目录名。

--------------------------------------------------------------------------------

//makethedirectory"test"

ftp_mkdir($conn,"test");

//removethedirectory"test"

ftp_rmdir($conn,"test");

?

>

--------------------------------------------------------------------------------

建立一个FTP的目录通常是传输文件---那么就让我们开始吧!

先是上传文件,ftp_put()函数能很好的胜任这一职责,它需要你指定一个本地文件名,上传后的文件名以及传输的类型。

比方说:

如果你想上传“abc.txt”这个文件,上传后命名为“xyz.txt”,命令应该是这样:

--------------------------------------------------------------------------------

//upload

ftp_put($conn,"xyz.txt","abc.txt",FTP_ASCII);

?

>

--------------------------------------------------------------------------------

下载文件:

PHP所提供的函数是ftp_get(),它也需要一个服务器上文件名,下载后的文件名,以及传输类型作为参数,例如:

服务器端文件为his.zip,你想下载至本地机,并命名为hers.zip,命令如下:

--------------------------------------------------------------------------------

//download

ftp_get($conn,"hers.zip","his.zip",FTP_BINARY);

?

>

--------------------------------------------------------------------------------

PHP定义了两种模式作为传输模式FTP_BINARY和FTP_ASCII,这两种模式的使用请看上两例,至于其详细解释,本文也不多说了,具体请参看相关书籍。

 

我该怎样列示文件呢?

(用DIR?

))

PHP提供两种方法:

一种是简单列示文件名和目录,另一种就是详细的列示文件的大小,权限,创立时间等信息。

第一种使用ftp_nlist()函数,第二种用ftp_rawlist().两种函数都需要一个目录名做为参数,都返回目录列做为一个数组,数组的每一个元素相当于列表的一行。

--------------------------------------------------------------------------------

//obtainfilelisting

$filelist=ftp_nlist($conn,".");

?

>

--------------------------------------------------------------------------------

你一定想知道文件的大小吧!

别急,这里有一个非常容易的函数ftp_size(),它返回你所指定的文件的大小,使用BITES作为单位。

要指出的是,如果它返回的是“-1”的话,意味着这是一个目录,在随后的例子中,你将会看到这一功能的应用。

--------------------------------------------------------------------------------

//obtainfilesizeoffile"data.zip"

$filelist=ftp_size($conn,"data.zip");

?

>

现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这个程序能以WEB方式上传,下载文件---这就是我们将要做的!

在我们进入代码前,我想要告诉大家的是,这个例子仅仅只是为了向大家解释PHP的各种FTP函数的使用,很多方面还不够完善,比如说,错误分析等,至于你想应用到你自己的程序中,你应该进行一些修改!

程序包括以下几个文件:

index.html-登录文件

actions.php-程序必需的FTP代码

include.php-程序主界面,它显示文件列表和控制按钮。

让我们从"index.html"开始吧:

--------------------------------------------------------------------------------

Server

User

Password

">

--------------------------------------------------------------------------------

这是一个登录表单,有一个服务器名称、用户名、密码,输入框。

输入的变量将会被存到$server,$username和$password变量中,表单提交后,调用actions.php,它将初始化FTP联接。

注意那个“hidden”它传给action.php一个变量$action,值为CWD。

这是action.php文件的源码:

--------------------------------------------------------------------------------

--theinclude.phpinterfacewillbeinsertedintothispage-->

//检查表单传来的数据,不全则报错,要想程序完善的话,这里应该有更全的输入检测功能

if(!

$server||!

$username||!

$password)

{

echo"提交数据不全!

";

}

else

{

//keepreading

}

?

>

--------------------------------------------------------------------------------

接下来是变量"actions".程序允许以下的action:

"action=CWD"

改变工作目录

"action=Delete"

删除指定文件

"action=Download"

下载指定文件

"action=Upload"

上传指定文件

如果你仔细检查文件include.php,在里面包括一个HTML界面,你将会看到,它包括许多表单,每一个指向一个特定的功能,每一个表单包含一个field(通常隐藏),当表单提交,相应的功能将被执行。

例如:

按下“删除”,"action=Delete"就被传送给"actions.php"

为了操作这四个功能,actions.php中代码如下:

--------------------------------------------------------------------------------

//action:

改变目录

if($action=="CWD")

{

//具体代码

}

//action:

删除文件

elseif($action=="Delete")

{

//具体代码

}

//action:

下载文件

elseif($action=="Download")

{

//具体代码

}

//action:

上传文件

elseif($action=="Upload")

{

//具体代码

}

?

>

--------------------------------------------------------------------------------

以上的具体代码将会实现指定的功能,并退出循环,它们都包含以下步骤:

--------------------------------------------------------------------------------

通过定制的函数联接并登录FTP服务器

connect();

转向适当的目录

执行选择的功能

刷新列表,以察看改变的结果

通过include("include.php"),显示文件列表和控制按钮

关闭联接

--------------------------------------------------------------------------------

注意:

以下功能支持多文件操作-即"action=Delete"和"action=Download"它们使用FOR循环来实现。

变量$cdir和$here将在每一阶段实时更新。

现在终于到了我们的第三个文件,include.php它为程序建立起一个用户界面。

"include.php"包含三个表单,一些PHP代码获取当前的目录列表并将它们存入三个变量

$files(包括当前目录下的文件),

$file_sizes(相应的文件大小),

and$dirs(包含子目录名)

第一个表单使用$dirs产生一个下拉式目录列表,对应于“action=CWD”。

第二个表单使用$files$file_sizes创建一个可用的文件列表,每一个文件使用一个checkbox。

这个表单的action对应于"action=Delete"and"action=Download"

第三个表单用来上传一个文件到FTP站点,如下:

--------------------------------------------------------------------------------

...

...

--------------------------------------------------------------------------------

当PHP以这种

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1