web-dev-qa-db-fra.com

Comment télécharger un fichier sur un serveur SFTP en C # (.NET)?

Existe-t-il une bibliothèque .NET gratuite avec laquelle je peux télécharger un fichier sur un serveur SFTP (SSH FTP), ce qui lève des exceptions sur les problèmes de téléchargement et permet le suivi de sa progression?

64
Corey

Peut-être que vous pouvez script/contrôle winscp ?

Mise à jour: winscp a maintenant ne bibliothèque .NET disponible en paquet nuget qui prend en charge SFTP, SCP et FTPS

35
Kasprzol

Le code suivant montre comment télécharger un fichier sur un serveur SFTP à l'aide de notre composant 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();

Vous pouvez écrire un journal de communication complet dans un fichier à l'aide d'une propriété LogWriter comme suit. Des exemples de sortie (à partir 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 des é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'informations, voir tutoriel ou télécharger un essai et vérifier exemples .

7
Martin Vobr

Il n'y a pas de solution pour cela dans le cadre .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
ddc0660

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
Bruce Blackshaw

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

J'ai utilisé CuteFTP dans un projet qui utilise SFTP. Il expose un composant COM autour duquel j'ai créé un wrapper .NET. Le hic, vous trouverez, ce sont les autorisations. Il fonctionne magnifiquement sous les informations d'identification Windows qui ont installé CuteFTP, mais l'exécution sous d'autres informations d'identification nécessite que les autorisations soient définies dans DCOM.

0
Mike L