- <?php
- $host = 'xxx';
- $user = 'user';
- $pwd = '123';
- $con = ftp_connect($host);
- $login = ftp_login($con,$user,$pwd);
- if($login){
- echo "ftp链接成功!<br/>";
- }
- $file1="baaa.doc";
- echo ftp_put($con,$file1,"2222/aaa.doc",FTP_BINARY);//file1shi ftp的路径 第二个参数是当前服务器上的路径 2222/aaa.doc是本地的路径
- echo "<br>";
- $file2="测试aaa.doc"; //中文也是好使的
- echo ftp_put($con,$file2,"2222/测试.doc",FTP_BINARY);//file1shi ftp的路径 第二个参数是当前服务器上的路径 2222/aaa.doc是本地的路径
- echo "<br>";
- $path="444/555";//创建目录只能一层一层的创建
- $dir=explode("/", $path);
- $path="";
- for ($i=0;$i<count($dir);$i++)
- {
- $path.="/".$dir[$i];
- echo $path."<br>";
- if(!@ftp_chdir($con,$path)){
- @ftp_chdir($con,"/");
- if(!@ftp_mkdir($con,$path)){
- $ret=false;
- break;
- }
- }
- }
- ftp_put($con,"eee.doc","2222/aaa.doc",FTP_BINARY);//file1shi ftp的路径 第二个参数是当前服务器上的路径 此时放到了555下面
- // echo ftp_pwd($con)."<br>";//当前目录名
- //exit;
- @ftp_chdir($con,"../");
- ftp_put($con,$file1,"2222/aaa.doc",FTP_BINARY); //附件放到了444里面 FTP_ASCII
- //把当前目录切换为父目录
- ftp_cdup($con); //回到了上一级目录 默认的是share下
- ftp_put($con,"ccc.doc","2222/aaa.doc",FTP_BINARY); //附件放到了444里面
- @ftp_chdir($con,"444"); //进入到了444目录
- //文件下载
- ftp_get($con,"2222/aaa1.doc", "baaa.doc", FTP_BINARY);//第一个是本地 第二个是ftp的路径文件
- @ftp_chdir($con,"555");//进入555
- ftp_delete($con,"eee.doc"); //删除文件是好使的
- ftp_cdup($con);
- ftp_rmdir($con,"555"); //删除目录
- echo ftp_pwd($con)."<br>";//当前目录名
- //http://www.w3school.com.cn/php/php_ref_ftp.asp
- ftp_close($con);
- ?>
- </body>
- </html>
ftp效率不是很高,推荐使用curl
function file_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){
$curlobj = curl_init();//初始化
//传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'
curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);
curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);
//time out after 300s
curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间
//通过这个函数设置ftp的用户名和密码,没设置就不需要!
curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);
$outfile = fopen($fileSavePath,'w+'); //保存到本地文件的文件名
curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$rtn = curl_exec($curlobj);
if(curl_errno($curlobj)){
writeLog('Curl error: ' . curl_error($curlobj));
}
fclose($outfile);
curl_close($curlobj);
if($rtn == 1){
return true;
}else{
unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除
return false;
}
}
$curlobj = curl_init();//初始化
//传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'
curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);
curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);
//time out after 300s
curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间
//通过这个函数设置ftp的用户名和密码,没设置就不需要!
curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);
$outfile = fopen($fileSavePath,'w+'); //保存到本地文件的文件名
curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$rtn = curl_exec($curlobj);
if(curl_errno($curlobj)){
writeLog('Curl error: ' . curl_error($curlobj));
}
fclose($outfile);
curl_close($curlobj);
if($rtn == 1){
return true;
}else{
unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除
return false;
}
}