如何将文件从Sftp服务器下载到本地机器

问题描述:

我必须从Sftp服务器下载文件到本地机器。我正在使用phpseclib创建连接。它与Sftp服务器连接。但我必须从服务器下载一个文件到本地机器。我怎样才能做到这一点。我正在使用此代码将dummy.txt从远程服务器下载到本地计算机。请帮助如何将文件从Sftp服务器下载到本地机器

public function startProcess() { 

    $sftp = new Net_SFTP('www.domain.com'); 

    if (!$sftp->login('username', 'password')) { 
     exit('Login Failed'); 
    } 
    else { 
     echo "connected"; 
    } 

    echo $sftp->pwd() . "\r\n"; 
    downloadfiles('/path to server/dummy.txt');  
} 

public function downloadfiles($filename) 
{ 
    if($filename) 
    { 
     $remote=file_get_contents($filename); 
     $local_file_path='localpath/adobe.txt'; 
     file_put_contents($local_file_path,$remote); 
    } 
    else 
    { 
     echo "error download files"; 
    } 

} 

请帮我找出答案。

+1

哦,不!您的Enter键似乎卡住了! – 2015-02-24 08:17:19

+0

本机是运行php脚本还是在单独的服务器上运行? – jeroen 2015-02-24 08:21:35

+0

这是本地机器。 – Rupzz 2015-02-24 08:23:35

那么你没有在任何地方做$sftp->get()

下面是你的代码的重新工作版本进行下载:

global $sftp; 

public function startProcess() { 

    $sftp = new Net_SFTP('www.domain.com'); 

    if (!$sftp->login('username', 'password')) { 
     exit('Login Failed'); 
    } 
    else { 
     echo "connected"; 
    } 

    echo $sftp->pwd() . "\r\n"; 
    downloadfiles('/path to server/dummy.txt');  
} 

public function downloadfiles($filename) 
{ 
    if($filename) 
    { 
     $local_file_path='localpath/adobe.txt'; 
     $sftp->get($filename, $local_file_path); 
    } 
    else 
    { 
     echo "error download files"; 
    } 

}