我们正在用 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 服务器上创建目录。使用 WinSCPSession.FileExists
和Session.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/