使用 PHP 将本地文件夹中的所有文件上传到 SFTP

Upload all files from a local folder to SFTP using PHP

我可以将本地目录上传到SFTP 中的远程目录吗? 或者我可以将目录中的所有文件上传到 SFTP 吗?

我尝试以这种方式上传目录中的所有文件:

$file = "C:/incoming/360/upload/".date("Ymd")."/*.*";
$dest = "/testing/*.*";

$contents = file_get_contents($file);
file_put_contents("ssh2.sftp://{$sftp}/testing/{$dest}", $contents);

我认为上面的代码只是按文件名上传。

您已迭代本地文件并逐一上传:

$files = glob("C:/incoming/360/upload/".date("Ymd")."/*");

foreach ($files as $file)
{
    $contents = file_get_contents($file);
    $basename = basename($file);
    file_put_contents("ssh2.sftp://{$sftp}/testing/{$dest}", $contents);
}

但请注意,在处理较大的文件时,使用 file_get_contentsfile_put_contents 是非常无效的,因为您将整个文件内容加载到内存中。

最好使用 fopenstream_copy_to_stream