【问题标题】:WinSCP Move file after upload with C#使用 C# 上传后的 WinSCP 移动文件
【发布时间】:2015-09-15 15:21:36
【问题描述】:

我正在创建一个 SFTP 上传程序。它工作得很好,它连接到远程 SFTP 服务器并按预期上传文件。我遇到的问题我希望上传后的文件移动到本地服务器上的新目录。我搜索了 WinSCP 站点并进行了谷歌搜索,但我使用的代码不起作用。这是我所拥有的:

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

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

【问题讨论】:

    标签: c# winscp winscp-net file-move


    【解决方案1】:

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

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


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

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

    File.Move(transfer.FileName, destinationPath);
    

    【讨论】:

    • 谢谢。我应该带着我的第一个直觉反应离开。我将您的回复标记为答案,因为它让我走上了正确的道路。
    • remove 标志提示帮助了我。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 2015-01-18
      相关资源
      最近更新 更多