1、ftp ls200 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 bindrwx-x-x 8 john users 1024 Nov 2 10:59 public_htmldrwxr-r- 4 john users 1024 Nov 2 11:26
2、tmp-rw-r-r- 1 john users 2941465 Oct 9 17:21 data.zip226 Transfer complete. bin200 Type set to I. get data.ziplocal: data.zip remote: data.zip150 Opening BINARY mode data connection for data.zip(2941465 bytes). bye221 Goodbye.你可以看到,进程明显被分为几段:联接(与FTP服务器建立联接)、验证(确定用户是否有权力进入系统)、传输(这里包括列目录,上传或下载文件)、取消联接
3、。使用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, FTP_BINARY);/ 关闭联接ftp_quit($conn);让我们一步步的来:为
4、了初结化一个FTP联接,PHP提供了ftp_connect()这个函数,它使用主机名称和端口作为参数。在上面的例子里,主机名字为“”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用。/ connect to FTP server一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。你可以看到,这个函数ftp_login()使用了ftp_connect()函数传来的handle,以确定用户名和密码能被提交到正确的服务器。/ log in with usernam
5、e and password这时,你就能够做你想做的事情了,具体在下一部分讲:做完你想做的事后,千万要记住使用ftp_quit()函数关闭你的FTP联接/ close connection登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。ftp_pwd()如果你想知道你当前所在的目录时,你就要用到这个函数了。/ get current location$here = ftp_pwd($conn);万一你需要知道服务器端运行的是什么系统呢?ftp_systype()正好提供给你这方面的信息。/ get system type$server_os = ftp_s
6、ystype($conn);关于被动模式(PASV)的开关,PHP也提供了这样一个函数,它能打开或关闭PASV(1表示开)/ turn PASV onftp_pasv($conn, 1);现在,你已经知道你在“哪里”和“谁”跟你在一起了吧,现在我们开始在目录中逛逛-实现这一功能的是ftp_chdir()函数,它接受一个目录名作为参数。/ change directory to public_htmlftp_chdir($conn, 如果你想回到你刚才所在的目录(父目录),ftp_cdup()能帮你实现你的愿望,这个函数能回到上一级目录。/ go up one level in the dire
7、ctory treeftp_cdup($conn);你也能够建立或移动一个目录,这要使用ftp_mkdir()和ftp_rmdir()函数;注意:ftp_mkdir()建立成功的话,就会返回新建立的目录名。/ make the directory testftp_mkdir($conn, / remove the directory ftp_rmdir($conn, 建立一个FTP的目录通常是传输文件- 那么就让我们开始吧!先是上传文件,ftp_put()函数能很好的胜任这一职责,它需要你指定一个本地文件名,上传后的文件名以及传输的类型。比方说:如果你想上传“abc.txt”这个文件,上传后命
8、名为“xyz.txt”,命令应该是这样:/ uploadftp_put($conn, xyz.txtabc.txt, FTP_ASCII);下载文件:PHP所提供的函数是ftp_get(),它也需要一个服务器上文件名,下载后的文件名,以及传输类型作为参数,例如:服务器端文件为his.zip,你想下载至本地机,并命名为hers.zip,命令如下:/ downloadhers.ziphis.zipPHP定义了两种模式作为传输模式 FTP_BINARY 和 FTP_ASCII ,这两种模式的使用请看上两例,至于其详细解释,本文也不多说了,具体请参看相关书籍。我该怎样列示文件呢?(用DIR? :) )
9、PHP提供两种方法:一种是简单列示文件名和目录,另一种就是详细的列示文件的大小,权限,创立时间等信息。第一种使用ftp_nlist()函数,第二种用ftp_rawlist().两种函数都需要一个目录名做为参数,都返回目录列做为一个数组,数组的每一个元素相当于列表的一行。/ obtain file listing你一定想知道文件的大小吧!别急,这里有一个非常容易的函数ftp_size(),它返回你所指定的文件的大小,使用BITES作为单位。要指出的是,如果它返回的是 “-1”的话,意味着这是一个目录,在随后的例子中,你将会看到这一功能的应用。/ obtain file size of file
10、$filelist = ftp_size($conn, 现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这个程序能以WEB方式上传,下载文件-这就是我们将要做的!在我们进入代码前,我想要告诉大家的是,这个例子仅仅只是为了向大家解释PHP的各种FTP函数的使用,很多方面还不够完善,比如说,错误分析等,至于你想应用到你自己的程序中,你应该进行一些修改!程序包括以下几个文件:index.html - 登录文件actions.php - 程序必需的FTP代码include.php - 程序主界面,它显示文件列表
11、和控制按钮。让我们从 index.html开始吧:table border=0 align=centerform action=actions.php method=postinput type=hidden name=action value=CWDtrtdServer/tdinput type=text name=server/trUserinput type=text name=usernamePasswordinput type=password name=passwordtd colspan=2 align=centerinput type=submit value=Beam Me
12、Up, Scotty!/form/table这是一个登录表单,有一个服务器名称、用户名、密码,输入框。输入的变量将会被存到$server, $username 和 $password 变量中,表单提交后,调用actions.php,它将初始化FTP联接。注意那个“hidden” 它传给action.php一个变量$action ,值为CWD。这是action.php文件的源码:htmlheadbasefont face=Arial/headbody!- the include.php interface will be inserted into this page -/检查表单传来的数据,不
13、全则报错,要想程序完善的话,这里应该有更全的输入检测功能if (!$server | !$username | !$password)echo 提交数据不全!;else/ keep reading/body/html接下来是变量 actions. 程序允许以下的action:action=CWD改变工作目录action=Delete删除指定文件action=Download下载指定文件action=Upload上传指定文件如果你仔细检查文件include.php,在里面包括一个HTML界面,你将会看到,它包括许多表单,每一个指向一个特定的功能,每一个表单包含一个field(通常隐藏) ,当表单
14、提交,相应的功能将被执行。例如:按下“删除”,就被传送给为了操作这四个功能,actions.php中代码如下:/ action: 改变目录if ($action = CWD)/ 具体代码 删除文件else if ($action = Delete 下载文件Download 上传文件Upload以上的具体代码将会实现指定的功能,并退出循环,它们都包含以下步骤:通过定制的函数联接并登录FTP服务器connect();转向适当的目录执行选择的功能刷新列表,以察看改变的结果通过include(include.php),显示文件列表和控制按钮关闭联接注意:以下功能支持多文件操作- 即 和 它们使用FOR
15、循环来实现。变量$cdir 和 $here 将在每一阶段实时更新。现在终于到了我们的第三个文件,include.php 它为程序建立起一个用户界面。 包含三个表单,一些PHP代码获取当前的目录列表并将它们存入三个变量$files (包括当前目录下的文件),$file_sizes (相应的文件大小),and $dirs (包含子目录名)第一个表单使用$dirs 产生一个下拉式目录列表,对应于“action=CWD”。第二个表单使用$files $file_sizes创建一个可用的文件列表,每一个文件使用一个checkbox。这个表单的action对应于 and 第三个表单用来上传一个文件到FTP站点,如下:form enctype=multipart/form-data action=actions.php4 method=post.input type=file name=upfile当PHP以这种
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1