PHP使用FTP函数备份/上传服务器文件

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/>";






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值