我正在创建一个SFTP上传程序。它工作得很好,它连接到远程SFTP服务器并按预期上传文件。我遇到的问题我希望上传的文件移动到本地服务器上的新目录。我搜索过WinSCP网站并进行了谷歌搜索,但是我用它的代码不起作用。这就是我所拥有的:
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
session.MoveFile(transfer.FileName, Local_Processed);
}
在日志中指出它正在移动文件,但文件仍保留在原始文件夹中,并且处理过的文件夹中没有任何内容。
答案 0 :(得分:1)
Session.MoveFile
用于将远程文件移动到另一个远程目录或重命名远程文件。它不是用于将远程文件移动到本地目录。
要将远程文件移动到本地目录,请使用Session.GetFiles
的remove
参数。
虽然对我而言,您看起来确实想要将原始本地文件(已上载)移动到另一个本地目录。所以它实际上与WinSCP无关。
要移动本地文件,请使用File.Move
:
File.Move(transfer.FileName, destinationPath);
答案 1 :(得分:0)
以下是Martin Prikryl发布后的最终结果。在我的第一个用于移动文件之后,我最终不得不添加第二个foreach
。我还发现我的原始目录调用中的*.*
必须被忽略,因为这也会导致问题。
我最终在app.config
文件中创建了第二个变量。它与原始目录变量具有完全相同的路径,除了文件名没有*.*
。
foreach (var file in Directory.GetFiles(OrgPath))
{
File.Move(file, Path.Combine(Processed, Path.GetFileName(file)));
}