1
我們正在使用C#編寫控制檯應用程序,通過使用SFTP協議的WinSCP .NET程序集將文件上載到文件服務器。我能夠連接到服務器並將文件放置到服務器,但不是我想要的確切位置。請找到下面的代碼:通過C#在SFTP服務器上使用WinSCP創建目錄
其中
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文件得到放置在與名稱爲RepositoryScanJavaantUATUAT_17-11-2016-19_40_05.zip
Repository
文件夾級別。如果目錄在服務器上不存在,則它們不會被創建。
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());
}
}
}
在此先感謝!
我曾嘗試使用你的建議,但它拋出一個異常與消息說:「不允許遞歸調用」。 – Jordan
@Jordan你不能通過使用純粹的Q&A代碼來獲得這個例外。你的代碼必須更復雜。如果您遇到問題,請提出新問題。 –
我很確定它只有你在這裏提出的代碼導致異常。我調試了它,異常在** session.FileExists(path)**被調用後立即拋出。這個問題在WinSCP論壇上也有報道,請查看[這裏](https://winscp.net/forum/viewtopic.php?t=11193) – Jordan