Comment télécharger un fichier sur un serveur SFTP en C#/. NET? [fermé]

Cette fonctionnalité vient-elle avec. Net? sinon, quelle est la meilleure bibliothèque gratuite? J'ai besoin de quelque chose qui va jeter de bonnes exceptions quand il y a un problème, et me permet de surveiller ses progrès.

62
demandé sur Corey 2008-09-17 23:02:58

6 réponses

Edit: cette réponse est la depuis longtemps et n'est plus valide. Voir les commentaires

Vous pouvez jeter un oeil à SharpSSH. Il prend en charge SFTP hors de la boîte et C'est OpenSource.

23
répondu Ryan Lanciaux 2015-10-21 14:18:16

Peut-être que vous pouvez créer un script de contrôle/winscp?

Mise à jour: winscp a maintenant une bibliothèque. Net disponible en tant que paquet nuget {[2] } qui prend en charge SFTP, SCP et FTPS

31
répondu Kasprzol 2016-05-10 17:24:57

Le code suivant montre comment télécharger un fichier sur un serveur SFTP en utilisant notre composantRebex 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();

Vous pouvez écrire un journal de communication complet dans un fichier à l'aide D'une propriété LogWriter comme suit. Des exemples de sortie (du composant FTP mais la sortie SFTP est similaire) peuvent être trouvés ici .

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

Ou intercepter la communication en utilisant les événements comme suit:

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

Pour plus d'infos, voir tutoriel ou télécharger un essai et vérifier échantillons.

7
répondu Martin Vobr 2010-10-08 18:00:49

Il N'y a pas de solution pour cela dans le framework. net.

Http://www.eldos.com/sbb/sftpcompare.php présente une liste d'options non libres.

Votre meilleur pari gratuit est d'étendre SSH en utilisant Granados. http://www.routrek.co.jp/en/product/varaterm/granados.html

2
répondu ddc0660 2008-09-17 19:07:32

Malheureusement, ce N'est pas dans le Framework. net lui-même. Mon souhait est que vous puissiez intégrer avec FileZilla, mais je ne pense pas que cela expose une interface. Ils ont des scripts je pense, mais ce ne sera pas aussi propre évidemment.

J'ai utilisé CuteFTP dans un projet qui fait SFTP. Il expose un composant COM que j'ai créé un wrapper. net autour. Le hic, vous trouverez, Est des autorisations. Il fonctionne magnifiquement sous les informations D'identification Windows qui a installé CuteFTP, mais en cours d'exécution sous d'autres les informations d'identification nécessitent des autorisations à définir dans DCOM.

0
répondu Mike L 2008-09-17 19:09:06

Pour une autre option non libre, essayez edtFTPnet / PRO. Il a un support complet pour SFTP, et prend également en charge FTPS (et bien sûr FTP) si nécessaire.

0
répondu Bruce Blackshaw 2009-05-19 02:23:59