2010-10-28 7 views
1

Le titre de mon article indique presque tout: Comment télécharger un fichier à partir d'un serveur FTP en utilisant FTP via SSL en utilisant .NET? J'ai lu un peu et il y a plusieurs composants tiers à acheter qui enveloppent cette fonctionnalité. L'affaire est, c'est un besoin très spécifique et ne va pas grandir beaucoup, donc si le téléchargement d'un fichier à partir d'un serveur FTP en utilisant FTP sur SSL peut être fait en utilisant le .NET Framework (ie espace de noms System.Net ou quelque chose), alors ce serait mieux. Je n'ai pas besoin d'une tonne de fonctionnalités, mais si, pour une raison quelconque, coder avec un serveur FTP sécurisé est un cauchemar ou non via le .NET Framework BCL, ce serait bien de le savoir, car un .dll tiers serait le meilleur.Comment télécharger un fichier à partir d'un serveur FTP en utilisant FTP via SSL en utilisant .NET?

Merci!

Répondre

5

Comme ceci:

var request = (FtpWebRequest)WebRequest.Create("ftp://..."); 
request.EnableSsl = true; 
using (var response = request.GetResponse()) 
using (var data = response.GetResponseStream()) { 
    ... 
} 
+0

J'ai besoin de passer des crededntials -> est-ce que j'utilise un "request.Credentials = New Net.NetowrkCredential (" user "," pass ")"? En outre, on m'a donné une foule de sftp.domain.com et en utilisant le code que vous avez fourni, il indique qu'il s'agit d'un "URI invalide" (mais je peux y accéder via une application client FTP/SFTP en dehors de .NET donc je sais l'URI est valide). Si j'essaie "sftp: //domain.com", j'obtiens une exception "Le préfixe d'URI n'est pas reconnu". Des idées sur ces (2) articles? – atconway

+0

J'ai le sentiment que SFTP n'est pas supporté via la classe FtpWebRequest en fonction de ce lien: http://connect.microsoft.com/VisualStudio/feedback/details/181054/add-support-for-ftps-and-sftp-uris- for-webrequest – atconway

+0

@atconway: Essayez l'URI, 'ftp: // sftp.domain.com'. – SLaks

4

Voici le code VB.NET finale je:

Dim request As System.Net.FtpWebRequest = DirectCast(WebRequest.Create(New Uri("ftp://sftp.domain.com/myFile.txt")), System.Net.FtpWebRequest) 
    request.Method = WebRequestMethods.Ftp.DownloadFile 
    request.EnableSsl = True 
    request.Credentials = New Net.NetworkCredential("username", "password") 
    request.UsePassive = True 
    Dim response As System.Net.FtpWebResponse = DirectCast(request.GetResponse(), System.Net.FtpWebResponse) 

détails ici:

Télécharger FTP fichiers via FTP sur SSL (SFTP) dans .NET:
http://allen-conway-dotnet.blogspot.com/2010/11/download-ftp-files-using-ftp-over-ssl.html

0

Si vous avez besoin de plus de fonctionnalités comme SSL implicite, vérification de hachage, ou la syntaxe simplement plus propre, vous pouvez utiliser Ftp.dll FTP/FTPS client:

using(Ftp ftp = new Ftp()) 
{ 
    ftp.Connect("ftp.server.com");      
    ftp.Login("user", "password"); 

    ftp.ChangeFolder("downloads"); 
    ftp.Download("report.txt", @"c:\report.txt"); 

    ftp.Close(); 
} 

S'il vous plaît noter que ceci est un produit commercial et je suis l'auteur.

Questions connexes