是否可以从一个服务器(sftp)下载文件并使用php将其上传到我的服务器?

Not*_*Jay 1 php sftp

我被告知这不能做,但我想在这里得到一些其他的意见.在涉及到这样的事情时,我有点像新手.

我的网站:ExampleSiteA.com

要下载的文件:ExampleSiteB.com

基本上,我从ExampleSiteB.com下载csv文件以更新我的网站ExampleSiteA.com.为此,我通过CoreFTP手动下载csv文件,然后手动将其上传到ExampleSiteA.com.该文件每天更改,我想跳过此步骤,以便我可以自动执行该过程.

请记住,我需要通过SFTP从ExampleSiteB.com下载csv文件...

我不确定是否有可能直接下载/上传文件从一台服务器到另一台服务器,如果一个是SFTP.文件大小也很大,平均大约25,000 KB/25 MB.

我还没有探索的另一个选择是要求或包括来自另一台服务器的文件......这是一种选择还是可能性?该文件位于专门用于我的站点的文件夹中,SFTP下载需要登录.

任何见解将不胜感激.提前致谢!

小智 6

到这里下载你需要的东西:http://phpseclib.sourceforge.net/

UPDATE

  • 对于SFTP

然后在你的脚本中:

<?php
include('Net/SFTP.php');

$url = 'http://www.downloadsite.com';
$fileToDownload = "yourCSV.csv";
$cmd = "wget -q \"$url\" -O $fileToDownload";
exec($cmd);

$sftp = new Net_SFTP('www.uploadsite.com');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

echo $sftp->pwd() . "\r\n";
$sftp->put('remote.file.csv', 'yourCSV.csv', NET_SFTP_LOCAL_FILE);
print_r($sftp->nlist());
?>
Run Code Online (Sandbox Code Playgroud)

如果您需要连接到第二台服务器进行下载:

$sftp2 = new Net_SFTP('www.serverFromWhichToDownload.com');
if (!$sftp2->login('username', 'password')) {
    exit('Login Failed');
}

echo $sftp2->pwd() . "\r\n";
$sftp2->get('localFileName.csv', 'remoteFileName.csv');
print_r($sftp2->nlist());
Run Code Online (Sandbox Code Playgroud)

阅读文档以获取进一步的帮助和示例:http://phpseclib.sourceforge.net/documentation/net.html#net_sftp_get

要记录连接失败时的连接,请使用以下命令:

include('Net/SSH2.php');
define('NET_SSH2_LOGGING', true);
$ssh = new Net_SSH2('www.domain.tld');
$ssh->login('username','password');
echo $ssh->getLog();
Run Code Online (Sandbox Code Playgroud)
  • 对于FTP上传 - SO已经疯了,不想格式化我的代码,但无论如何它在这里:
$file = 'somefile.txt';
$remote_file = 'readme.txt';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
    echo "successfully uploaded $file\n";
} else {
    echo "There was a problem while uploading $file\n";
}
ftp_close($conn_id);