使用 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_contents
和 file_put_contents
是非常无效的,因为您将整个文件内容加载到内存中。
最好使用 fopen
和 stream_copy_to_stream
。
我可以将本地目录上传到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_contents
和 file_put_contents
是非常无效的,因为您将整个文件内容加载到内存中。
最好使用 fopen
和 stream_copy_to_stream
。