WinSCP 使用 C# 上传后移动文件

WinSCP Move file after upload with C#

我正在创建一个 SFTP 上传程序。它运行良好,它连接到远程 SFTP 服务器并按预期上传文件。我遇到的问题我希望文件一旦上传就移动到本地服务器上的新目录。我搜索了 WinSCP 站点并进行了 google 搜索,但我使用的代码无法正常工作。这是我拥有的:

foreach (TransferEventArgs transfer in transferResult.Transfers)
{
    Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
    session.MoveFile(transfer.FileName, Local_Processed);
}

在日志中它指出它正在移动文件,但文件仍保留在原始文件夹中,处理后的文件夹中没有任何内容。

Session.MoveFile用于将远程文件移动到另一个远程目录或重命名远程文件。它不是用于将远程文件移动到本地目录。

要将远程文件移动到本地目录,请使用 Session.GetFilesremove 参数。


不过对我来说,您似乎真的想将原始本地文件(已上传)移动到另一个本地目录。所以它实际上与 WinSCP 无关。

要移动本地文件,请使用 File.Move:

File.Move(transfer.FileName, destinationPath);

这是 Martin Prikryl 发布后的结果。在我的第一个用于移动文件之后,我最终不得不添加第二个 foreach。我还发现我原来的原始目录调用中的 *.* 必须被忽略,因为这也会导致问题。

我最终在 app.config 文件中创建了第二个变量。它与原始目录变量的路径完全相同,只是文件名没有 *.*

foreach (var file in Directory.GetFiles(OrgPath))
{
    File.Move(file, Path.Combine(Processed, Path.GetFileName(file)));
}