PHP使用FTP函数备份/上传服务器文件
2016-10-21 09:43
405 查看
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/>";
相关文章推荐
- Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
- mysql定期备份数据并压缩上传到ftp服务器的bat文件脚本,恢复建议使用SQLyog enterprise
- android上传文件到服务器(这里使用php)
- 【Android】Android客户端使用okhttp上传文件php服务器
- 使用C#作为客户端的PHP服务器上传文件
- eweb使用WINDOWS的“备份”工具对网站内容自动备份editor for php任意文件上传漏洞
- php使用curl 实现GET和POST请求(抓取网页,上传文件),支持跨项目和跨服务器
- Ajax——使用html配合php实现文件上传到服务器
- PHP使用之上传文件到服务器
- PHP使用之上传文件到本地服务器(实现上传文件后页面内容不动、解决上传文件命名乱码后缀问题)
- Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
- PHP服务器文件管理器开发小结(十):使用jQuery和iframe实现AJAX文件上传
- [置顶] Android上传文件到Web服务器,PHP接收文件(二)
- 使用ASP.NET上传多个文件到服务器(一)
- FireFox下使用Javascript上传大文件(php版本)
- php中对上传到服务器的文件重命名
- Android上传文件到Web服务器,PHP接收文件(二)
- Android上传文件到Web服务器,PHP接收文件(一)
- php使用curl上传文件
- iphone上传文件到php做的服务器的有关问题