ti-enxame.com

Como faço para carregar um arquivo em um servidor SFTP em C # (.NET)?

Existe uma biblioteca .NET gratuita com a qual eu posso carregar um arquivo em um servidor SFTP (SSH FTP), que lança exceções em problemas com o upload e permite o monitoramento de seu progresso?

64
Corey

Talvez você possa script/controle winscp ?

Atualização: winscp agora tem ma biblioteca .NET disponível como pacote de pepitas que suporta SFTP, SCP e FTPS

35
Kasprzol

O código a seguir mostra como fazer upload de um arquivo para um servidor SFTP usando nosso componente 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();

Você pode gravar um log de comunicação completo em um arquivo usando uma propriedade LogWriter da seguinte maneira. Exemplos de saída (do componente FTP, mas a saída SFTP é semelhante) podem ser encontrados aqui .

client.LogWriter = new Rebex.FileLogWriter(
   @"c:\temp\log.txt", Rebex.LogLevel.Debug); 

ou interceptar a comunicação usando eventos da seguinte maneira:

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);
}

Para obter mais informações, consulte tutorial ou download uma avaliação e verifique amostras .

7
Martin Vobr

Não há solução para isso na estrutura .net.

http://www.eldos.com/sbb/sftpcompare.php descreve uma lista de opções não-livres.

sua melhor aposta grátis é estender o SSH usando o Granados. http://www.routrek.co.jp/en/product/varaterm/granados.html

2
ddc0660

Para outra opção não livre, tente edtFTPnet/PRO . Possui suporte abrangente para SFTP e também suporta FTPS (e, é claro, FTP), se necessário.

0
Bruce Blackshaw

Infelizmente, não está no próprio .NET Framework. Meu desejo é que você possa se integrar ao FileZilla, mas acho que não expõe uma interface. Acho que eles têm scripts, mas obviamente não será tão limpo.

Eu usei o CuteFTP em um projeto que faz SFTP. Ele expõe um componente COM no qual eu criei um wrapper .NET. O problema, você encontrará, são as permissões. Ele roda lindamente sob as credenciais do Windows que instalaram o CuteFTP, mas a execução sob outras credenciais exige que as permissões sejam definidas no DCOM.

0
Mike L