Входит ли эта возможность в .Net? Если нет, то какая лучшая бесплатная библиотека? Мне нужно что-то, что будет бросать хорошие исключения, когда есть проблема, и позволяет мне следить за ее прогрессом.
Как загрузить файл на SFTP-сервер в С#/.NET?
Ответ 1
Изменить: этот ответ уже давно и уже недействителен. См. Комментарии
Вы можете посмотреть SharpSSH. Он поддерживает SFTP из коробки и является OpenSource.
Ответ 2
Возможно, вы можете script/control winscp?
Обновление: winscp теперь имеет библиотека .NET, доступная как пакет nuget, который поддерживает SFTP, SCP и FTPS
Ответ 3
Следующий код показывает, как загрузить файл на SFTP-сервер, используя наш компонент Rebex SFTP.
// create client, connect and log in
Sftp client = new Sftp();
client.Connect(hostname);
client.Login(username, password);
// upload the 'test.zip' file to the current directory at the server
client.PutFile(@"c:\data\test.zip", "test.zip");
client.Disconnect();
Вы можете написать полный журнал связи в файл с использованием свойства LogWriter следующим образом. Примеры вывода (из компонента FTP, но выход SFTP аналогичны) можно найти здесь.
client.LogWriter = new Rebex.FileLogWriter(
@"c:\temp\log.txt", Rebex.LogLevel.Debug);
или перехватите связь с помощью событий следующим образом:
Sftp client = new Sftp();
client.CommandSent += new SftpCommandSentEventHandler(client_CommandSent);
client.ResponseRead += new SftpResponseReadEventHandler(client_ResponseRead);
client.Connect("sftp.example.org");
//...
private void client_CommandSent(object sender, SftpCommandSentEventArgs e)
{
Console.WriteLine("Command: {0}", e.Command);
}
private void client_ResponseRead(object sender, SftpResponseReadEventArgs e)
{
Console.WriteLine("Response: {0}", e.Response);
}
Для получения дополнительной информации см. tutorial или download пробная версия и проверка samples.
Ответ 4
Внутри .NET Framework нет решения.
http://www.eldos.com/sbb/sftpcompare.php описывает список несвободных параметров.
Ваша лучшая бесплатная ставка заключается в расширении SSH с помощью Granados. http://www.routrek.co.jp/en/product/varaterm/granados.html
Ответ 5
К сожалению, это не в самой .NET Framework. Мое желание состоит в том, что вы можете интегрироваться с FileZilla, но я не думаю, что он предоставляет интерфейс. Думаю, у них есть сценарии, но это будет не так чисто, как очевидно.
Я использовал CuteFTP в проекте, который выполняет SFTP. Он предоставляет COM-компонент, который я создал обертку .NET. Улов, вы найдете, это разрешения. Он отлично работает под учетными данными Windows, которые установили CuteFTP, но для работы под другими учетными данными требуются разрешения для установки в DCOM.
Ответ 6
Для другой несвободной опции попробуйте edtFTPnet/PRO. Он имеет всестороннюю поддержку SFTP, а также, при необходимости, поддерживает FTPS (и, конечно, FTP).