1、使用FTP从服务器下载文件
①连接远程FTP服务器
$conn = ftp_connect($host);
②登录(通过用户名或匿名登录)
许多FTP网站都支持匿名登录(anony-mous),任何人都可以用这个名字来连接FTP服务器,匿名登录通常包电子邮箱作为地址;
$result = @ftp_login($conn ,$user ,$password);
③检查远程文件是否已经更新;
$localtime = filemtime($localfile);
//获取本地文件更新时间
$remotetime = ftp_mdtm($conn,$remotefile);
//获取远程文件更新时间
④如果该文件已更新,下载此文件;
$fp = fopen($localfile ,'w');
$success = ftp_fget($conn,$fp,$remotefile,FTP_BINARY);
fclose($fp);
⑤关闭FTP连接;
ftp_quit($conn);
<?php
//预设变量
$host = 'ftp.cs.rmit.edu.au';
$user = 'anonymous';
$password = 'me@example.com';
$remotefile = 'pub/tsg/teraterm/ttssh14.zip';
$localfile = '/d:/D:/Program Design/PHP/ttssh14.zip';
//连接FTP服务器
$conn = ftp_connect($host); //连接FTP服务器
if($conn){
echo "Error:Could not connect to ftp server<br/>";
exit;
}
echo "Connected to Host $host .<br/>";
//登陆(通过用户名或者匿名登陆)
$result = @ftp_login($conn ,$user ,$password); //使用用户名登陆FTP服务器
if(!$result){
echo "Error: Could not log on as $user<br />";
ftp_quit($conn);
exit;
}
//检查文件是否更新
echo "Checking file timne....<br./>";
if(file_exists($localfile)){ //检验本地文件是否存在
$localtime = filemtime($localfile); //文件存在时,获取该文件的最近修改时间
echo "Local file last update date(\"G:i j-M-Y\",$localtime) <br/>";
}
else
$localtime = 0; //文件不存在时,本地修改时间设置为0,以确保文件能被下载
$remotetime = ftp_mdtm($conn,$remotefile);
if(!($remotetime >= 0)) { //在无法获取下载文件的修改时间的情况下,手动设置下载文件的修改时间,确保文件下载
echo "Cant\'t access remote file time.<br/>";
$remotetime = $localtime + 1;
}
if(!($remotetime > $localtime)){ //比较本地文件下载文件的更新时间,决定是否下载文件
echo "Local copy is up to date<br/>";
}
//下载文件
echo "Get the file form server...<br/>";
$fp = fopen($localfile ,'w');
$success = ftp_fget($conn,$fp,$remotefile,FTP_BINARY);
if(!$success){
echo 'Error: Could not download file';
ftp_quit($conn);
exit;
}
fclose($fp);
echo "File downloaded successfully";
//关闭FTP连接
ftp_quit($conn);
?>2、上传文件
基本步骤同上,将ftp_fget() , ftp_get() 函数更换为ftp_fput() 、ftp_put();
bool ftp_fput ( resource
$ftp_stream , string
$remote_file , resource $handle , int $mode [, int$startpos = 0 ] )bool ftp_put ( resource
$ftp_stream , string
$remote_file , string $local_file , int $mode [, int$startpos ] )3、其他的FTP函数
set_time_limit($time):设置该脚本的执行时间避免脚本执行超时,php.ini中默认30s;
ftp_size($conn, $remotefile ):获取FTP服务器上一个文件的大小;
获取FTP服务器特定目录上的文件列表:
$listing = ftp_nlist($conn , dirname($remotefile));
foreach($listing as $filename)
echo "$filename<br/>";
本文介绍了如何使用PHP通过FTP从服务器下载文件及上传文件的基本步骤,包括连接FTP服务器、登录、检查文件更新状态、下载和上传文件等过程,并提供了具体代码示例。
292

被折叠的 条评论
为什么被折叠?



