2012-11-21 74 views
3

我使用phpseclib - SFTP类,我试图上传像这样一个文件 -PHP SFTP简单的文件上传

$sftp = new Net_SFTP('mydomain.com'); 
if (!$sftp->login('user', 'password')) { 
    exit('Login Failed'); 
} 
$sftp->put('/some-dir/',$fileTempName); 

但是没有被上传里面some-dir但在此之前上传一个目录下的文件(到起始目录,让我们说它是根)。这让我疯狂,我想我已经试过some-dir//some-dir/some-dir/的所有组合,但该文件不会在那里上传。

+0

首先检查SFTP当前工作目录。使用$ sftp-> pwd()。然后,您将能够提供上传文件的正确路径。其次,你必须提供文件路径。例如,$ sftp-> put('/ some-dir/filename_remote','localfile'); –

+0

$ sftp-> put('/ some-dir/filename_remote','localfile',NET_SFTP_LOCAL_FILE)将上传文件。对不起,我以前的评论中缺少NET_SFTP_LOCAL_FILE –

回答

2

我不认为你的看法正在做你认为正在做的事。根据文档,你需要做一个Net_SFTP::chdir('/some-dir/')切换到你想要发送文件的目录,然后put($remote_file, $data),其中remote_file是文件的名称,而$data是实际的文件数据。

示例代码:

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

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

echo $sftp->pwd() . "\r\n"; 
$sftp->put('filename.ext', 'hello, world!'); 
print_r($sftp->nlist()); 
?> 
+0

谢谢我认为那样做。所以只是为了澄清(如果其他人有这个问题)。 $ sftp-> put第一个参数是要在服务器上创建(上传)的文件名,第二个参数是数据(字符串文本或文件句柄)。如果要上传到特定目录,请在使用put之前使用Net_SFTP :: chdir('somedir')更改为该目录。 – user1551120