PHP SFTP 简单文件上传

3
我正在使用phpseclib-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/ 的组合方式,但文件就是无法上传到那里。


首先在SFTP中检查当前工作目录。使用$sftp->pwd()。然后您将能够提供正确的路径来上传文件。其次,您需要提供文件路径。例如:$sftp->put('/some-dir/filename_remote', 'localfile'); - Lawrence Gandhar
$sftp->put('/some-dir/filename_remote','localfile', NET_SFTP_LOCAL_FILE) 将上传文件。抱歉我之前的评论中漏掉了 NET_SFTP_LOCAL_FILE。 - Lawrence Gandhar
1个回答

3

我认为你的put操作并没有做你想象中的事情。根据文档,你需要执行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());
?>

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接