php类 ftp连接下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a114469/article/details/81904521

一、 方法

<?php

namespace app\admin\controller;

/** 
 * 从FTP获取自动下载文件的PHP类 
 */  
class FtpClass{  

    private $ftpObj;  
    private $ftpHost = "****";    // 服务器地址  
    private $ftpPort = ****;            // 服务器端口  
    private $ftpUser = "****";        // 用户名  
    private $ftpPassword = "****";        // 口令  
    private $localBase = '/your/save/path'; //你存放的目录  

    function __construct($initData=array()){  
        if (isset($initData['ftpHost']) && $initData['ftpHost']){  
            $this->ftpHost = $initData['ftpHost'];  
        }  
        if (isset($initData['ftpPort']) && $initData['ftpPort']){  
            $this->ftpPort = $initData['ftpPort'];  
        }  
        if (isset($initData['ftpUser']) && $initData['ftpUser']){  
            $this->ftpUser = $initData['ftpUser'];  
        }  
        if (isset($initData['ftpPassword']) && $initData['ftpPassword']){  
            $this->ftpPassword = $initData['ftpPassword'];  
        }  
        if (isset($initData['localBase']) && $initData['localBase']){  
            $this->localBase = $initData['localBase'];  
        }  
    }  
      
    function ftp_connect(){  
        if(!$this->ftpObj){  
            $this->ftpObj = ftp_connect($this->ftpHost,$this->ftpPort);    // 连接ftp服务器  
            if($this->ftpObj) {  
                if(ftp_login($this->ftpObj, $this->ftpUser, $this->ftpPassword)) {    // 登录  
                    return true;  
                }else{  
                    return false;  
                }  
            }else {  
                return false;  
            }  
        }  
    }  
      
    function ftp_download_file($fileName) {  
        //获取FTP路径  
        $ftpPath = dirname($fileName) . "/";    
        //获取文件名    
        $selectFile = basename($fileName);      
        // 进入指定路径  
        if(@ftp_chdir($this->ftpObj,$ftpPath)) {              
            //$localBase 如果不存在,新创建目录,务必确保 有创建权限  
            if(!is_dir($this->localBase)){  
                mkdir($this->localBase, 0777);  
            }  
            $toFile = $this->localBase.$fileName;  
            if(ftp_get($this->ftpObj, $toFile, $selectFile, FTP_BINARY)) {    //下载指定的FTP文件到指定的本地文件  
                return true;  
            }else {  
                return false;  
            }  
        }else {  
            return false;  
        }  
    }  
      
    function ftp_quit(){  
        if($this->ftpObj){  
            ftp_quit($this->ftpObj);  
        }  
    }  
  
    //调用
    /*
    $ftpObj = new FtpClass();  
    $ftpObj->ftp_connect();  
    $filename = '/config/config.sample.php';  
    $ftpObj->ftp_download_file($filename);  
    $ftpObj->ftp_quit();  
    exit();
    */
}  

二、定时写法

<?php

//ftp下载txt,解析并存到数据库

$ftpObj;  
$ftpHost	 = "***.***.***.**";    // 服务器地址  
$ftpPort 	 = "****";            // 服务器端口  
$ftpUser	 = "*****";        // 用户名  
$ftpPassword = "******";        // 口令  
$localBase   = '/php/'; 	//你存放的目录
$fileName	 = 'xxx.txt'; //文件名称

$ftpObj = ftp_connect($ftpHost,$ftpPort) or die("Could not connect");
if($ftpObj) {
    if(ftp_login($ftpObj, $ftpUser, $ftpPassword)) {//登录
        //获取FTP路径  
        $ftpPath = dirname($fileName) . "/";    
        //获取文件名    
        $selectFile = basename($fileName);      
        // 进入指定路径  
        if(@ftp_chdir($ftpObj,$ftpPath)) {
            //$localBase 如果不存在,新创建目录,务必确保 有创建权限  
            if(!is_dir($localBase)){  
                mkdir($localBase, 0777);  
            }  
            $toFile = $localBase.$fileName;  
            if(ftp_get($ftpObj, $toFile, $selectFile, FTP_BINARY)) {    //下载指定的FTP文件到指定的本地文件  
                var_dump('Success.');
                $path = $localBase . $fileName;
                parse($path);
            }else {  
                var_dump('Failed'); 
            }  
        }else{  
            var_dump('Failed to enter directory.');   
        }   
    }else{  
        var_dump('login fail.');
    }
}
ftp_quit($ftpObj);


function parse($path)
{
	$myfile = fopen($path, "r") or die("Unable to open file!");
	// 输出单行直到 end-of-file
	while(!feof($myfile)) {
	  echo fgets($myfile) . "<br>"; //操作
	}
	fclose($myfile);
}

猜你喜欢

转载自blog.csdn.net/a114469/article/details/81904521