分享
 
 
 

用PHP获取ftp的信息

王朝php·作者佚名  2004-07-28
窄屏简体版  字體: |||超大  

文件传输协议FTP (File Transfer Protocol) 是internet文件传送的基础。现在大家也都用它在局域网内传送大文件,而大多数ftp都设有匿名(anonymous)帐号,充分体现了网络资源共享的精神,极大地方便了用户的需求。我们可以通过常见的软件leapftp或者cuteftp,从别的服务器上下载或上传文件,也可以直接通过web形式,建立客户机和服务器端之间的通信,从而从ftp服务器上获取文件,或者对已有文件进行操作。PHP就提供了这样的函数库,可以帮你实现客户机和服务器之间的文件传送。

让我们先回忆一下我们用软件登陆ftp的过程:输入主机名――》输入帐号和密码进行登陆――》获取文件列表――》进行其他操作――》关闭FTP工具,退出。用PHP编程,流程也是一样的.

1,连接服务器

ftp_connect ( string host [, int port [, int timeout]])

host是要连接的服务器,port是服务器的端口号,timeout是连接超时时间限制。通常我们使用默认的port(21)和timeout(90秒)。例如我想连我自己电脑上的FTP,就可以这样

<?php

$conn_id=@ftp_connect(“10.111.149.42”,”21”) or die(“不能连接指定的服务器”);

?>

如果连接失败的话,程序就会告诉我”不能连接指定的服务器”.这里需要注意的是host前不要加”ftp://”,末尾也不要加”/”,下面的写法是错误的:

ftp_connect(“ftp://10.111.149.42”);

ftp_connect(“10.111.149.42/”);

2,登陆服务器

bool ftp_login ( resource ftp_stream, string username, string password)

ftp_stream即为我们上面已经获得的$conn_id,如果这里的用户名和密码是正确的,我们就可以登人给定的FTP连接。我的FTP服务器已经有一个帐号”iwind”,密码是”iwind”:

<?php

$conn_id=@ftp_connect(“10.111.149.42”,”21”) or die(“不能连接指定的服务器”);

@ftp_login($conn_id,”iwind”,”iwind”) or die(“登陆不了,请确认你的用户名和密码”);

?>

通常的FTP都设置有匿名帐号,你不必需要密码,用anonymous即可等入:

ftp_login($conn_id,”anonymous”,””);

3,如果一切都顺利,就可以得到文件列表了

array ftp_rawlist ( resource ftp_stream, string directory)

<?php

//登陆

……

//获取文件列表

$filelist=ftp_rawlist($conn_id,”/”);

?>

我们这样就可以得到主目录的文件和文件夹信息的数组$filelist,你可以把/改成一个子目录,比如”/upload”.以下打印文件列表:

<?

……

//打印文件列表

foreach($filelist as $file){

echo”$file”;

echo”<br>”;

}

?>

这时你会得到这样的结果:

drw-rw-rw- 1 user group 0 Oct 13 12:22 .

drw-rw-rw- 1 user group 0 Oct 13 12:22 ..

drw-rw-rw- 1 user group 0 Jun 18 2003 FILM

drw-rw-rw- 1 user group 0 Oct 13 12:29 MTV

drw-rw-rw- 1 user group 0 Nov 3 19:25 UPLOAD

分别是:

权限 子目录数 用户名称 用户组名称 文件尺寸 最后修改时间 文件(夹)名

在win下得到的子目录数是不正确的。不通的操作系统,得到的信息表达形式略有不同。

4,从服务器上下载或从本地上传文件。

bool ftp_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos])

这个函数用来下载 FTP 服务器上由 remote_file 参数指定的文件,并保存到由参数 local_file 指定的本地文件。传送模式参数 mode 只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 中的其中一个。比如我们想把software/pp.rar文件下载到我的本地,并把它命名位mm.rar:

<?php

$ftp=ftp_connect("10.111.149.42","21") or die("fail to connect");

ftp_login($ftp,"anonymous","") or die("fail to login");

$server_file="/UPLOAD/pp.rar";

if (ftp_get($ftp,"mm.rar", $server_file, FTP_BINARY)) {

echo success;

}

else{

echo fail;

}

?>

bool ftp_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos])

这个函数用来上传一个在已经打开的文件中的数据到 FTP 服务器,参数 handle 为所打开文件的句柄。参数 remote_file 为上传到服务器上的文件名。传输模式参数 mode 只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 其中的一个。下面是手册里的一个例子

<?php

// 打开一个待读的文件

$file = 'somefile.txt';

$fp = fopen($file, 'r');

// 连接到服务器

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// 试图以ASCII模式上传文件

if(ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {

echo "Successfully uploaded $filen";

} else {

echo "There was a problem while uploading $filen";

}

// 关闭连接和句柄.

ftp_close($conn_id);

fclose($fp);

?>

5,退出连接.

PHP提供了两个含义一样的函数ftp_quit,ftp_close,它们只是名称不一样而已。

void ftp_close ( resource ftp_stream)

这样就把当前活动的ftp连接关闭了。虽然不是必须,但原则上还是需要的。

ftp函数和文件系统函数名称和功能都有很多相近的地方,比如ftp_rmdir和rmdir,ftp_mkdir和mkdir, ftp_rename和rename,大家因此可以触类旁通。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有