c# - 在SFTP服务器上使用WinSCP通过C#创建目录

标签 c# .net sftp winscp winscp-net

我们正在用 C# 编写一个控制台应用程序,通过使用 SFTP 协议(protocol)的 WinSCP .NET 程序集将文件上传到文件服务器。我可以连接到服务器并将文件放置到服务器,但不能放置在我想要的确切位置。请找到如下代码:

哪里

path = \Repository\Scan\Java\ant\UAT
zippath = C:\Temp\UAT_17-11-2016-19_40_05.zip
sftppath = \Repository\Scan\Java\ant\UAT\UAT_17-11-2016-19_40_05.zip

ZIP 文件被放置在 Repository 文件夹级别,名称为 RepositoryScanJavaantUATUAT_17-11-2016-19_40_05.zip。如果服务器上不存在这些目录,则不会创建它们。

using (Session session = new Session())
{
    session.Open(sessionOptions);
    {
        if (System.IO.Directory.Exists(path))
        {
            Console.WriteLine("That path exists already.");
        }
        else
        {
            DirectoryInfo di = System.IO.Directory.CreateDirectory(path);
            Console.WriteLine(
                "The directory was created successfully at {0}.",
                System.IO.Directory.GetCreationTime(path));
        }

        try
        {
            Console.WriteLine("Put Files in the folder");
            TransferOptions transferOptions = new TransferOptions();
            transferOptions.TransferMode = TransferMode.Binary;
            TransferOperationResult transferResult;
            transferResult = session.PutFiles(zippath, sftppath, false, transferOptions);
            transferResult.Check();
        }                
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

最佳答案

  • 您不能使用System.IO.Directory.Exists来检查SFTP目录是否存在,也不能使用System.IO.Directory.CreateDirectory > 在SFTP 服务器上创建目录。使用 WinSCP Session.FileExistsSession.CreateDirectory方法:

    if (session.FileExists(path))
    {
        Console.WriteLine("That path exists already.");
    }
    else
    {
        session.CreateDirectory(path);
        Console.WriteLine("The directory was created successfully");
    }
    
  • SFTP 路径使用斜杠,而不是反斜杠:

    path = /Repository/Scan/Java/ant/UAT
    sftppath = /Repository/Scan/Java/ant/UAT/UAT_17-11-2016-19_40_05.zip
    

关于c# - 在SFTP服务器上使用WinSCP通过C#创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658319/

相关文章:

c# - 使用 svc-less 服务的 Autofac WCF 注册异常

c# - Visual Studio 2010 构建问题

c# - 当我需要服务进行 NTLM 身份验证时如何公开 MEX

c# - 如何控制何时更新远程 iCal (.ics) 文件以及同步日历?

html - 我如何摆脱这个字符?

.net - 在 Delphi XE2 中使用 .NET 程序集

python - "ssh"Paramiko 中的等效代理命令

linux - 在 Linux 上使用 PSFTP

java - 将 .txt 文件导出到 sFTP 服务器后,换行符不起作用

javascript - 使用 Javascript 文件读取 ASP.Net 项目中 Web.config 的配置设置