2016-03-29 16 views
0

Ich habe Datei hochladen mit FTP (Code unten angegeben) und es funktioniert korrekt. Aber jetzt muss ich eine Datei hochladen mit SFTP Bitte bittet Sie, mich auf die Bibliothek zu führen, um für sftp in VS verwendet werden.SFTP-Datei hochladen

class Program 
{ 
    static void Main(string[] args) 
    { 

     try 
     { 




      string path = ConfigurationManager.AppSettings["filepath"]; 
      string[] files = Directory.GetFiles(path, @"*.xlsx"); 
      string FtpServer = ConfigurationManager.AppSettings["ftpurl"]; 
      string Username = ConfigurationManager.AppSettings["username"]; 
      string Password = ConfigurationManager.AppSettings["password"]; 
      string directory = ConfigurationManager.AppSettings["directoryname"]; 


      if (files != null) 
      { 
       foreach (string file in files) 
       { 

        int port = 22; 
        FileInfo fi = new FileInfo(file); 
        string fileName = fi.Name; 
        string fileurl = path + @"/" + fileName; 
        string ftpFile = FtpServer + @":" + port + @"/" + directory + @"/" + fileName; 
        FtpWebRequest myRequest = (FtpWebRequest)FtpWebRequest.Create(ftpFile); 

        //WebRequest myreq = (WebRequest)WebRequest.Create(ftpFile); 

        //myreq.Credentials = new NetworkCredential(Username, Password); 
        myRequest.Credentials = new NetworkCredential(Username, Password); 
        //WebProxy wb = new WebProxy("http://proxy4.wipro.com:8080"); 
        //wb.Credentials = new NetworkCredential(Username, Password); 
        //myRequest.Proxy = wb; 

        myRequest.Method = WebRequestMethods.Ftp.UploadFile; 
        myRequest.Timeout = 1000000; 
        myRequest.UseBinary = true; 
        myRequest.KeepAlive = true; 


        myRequest.ContentLength = fi.Length; 

        byte[] buffer = new byte[4097]; 
        int bytes = 0; 
        int total_bytes = (int)fi.Length; 
        System.IO.FileStream fs = fi.OpenRead(); 
        System.IO.Stream rs = myRequest.GetRequestStream(); 


        while (total_bytes > 0) 
        { 
         bytes = fs.Read(buffer, 0, buffer.Length); 
         rs.Write(buffer, 0, bytes); 
         total_bytes = total_bytes - bytes; 
        } 

        fs.Close(); 
        rs.Close(); 

        //WebRequest upload = (WebRequest)myreq.GetResponse(); 
        FtpWebResponse uploadResponse = (FtpWebResponse)myRequest.GetResponse(); 
        Console.WriteLine("Upload File Successful"); 
        uploadResponse.Close(); 

       } 
      } 
     } 
     catch (Exception ex) 
     { 
      FTPDirectory.logfile.LogInfo("Error in Uploading file in ftp://ftp.xactlycorp.com" + ex.Message); 
     } 

} 
} 

Antwort

-1

Es gibt etwas SharpSSH benannt ist, die Sie verwenden können:

http://www.tamirgal.com/blog/page/SharpSSH.aspx

Beispiel Nutzung:

sftp = new Tamir.SharpSsh.Sftp(ipAddress, username, password); 
sftp.Connect(); 
sftp.Get(sourcePath, destinationPath); 
sftp.Close(); 
+1

Verwenden Sie kein SharpSSH. Es ist ein totes Projekt (nicht seit 2007 aktualisiert) –

+0

Hoppla, da gehts - benutze es nicht - aber wenn du nach "C# SFTP" suchst, wirst du Tonnen von Bibliotheken bekommen, die einfach und einfach zu benutzen sind, mehr oder weniger genau wie SharpSSH. Der Schlüsselwert der Antwort ist: Suche ist dein Freund. –

+0

Gibt es eine Möglichkeit, Datei-Upload-SFTP ohne Verwendung von Drittanbieter-Bibliotheken zu erstellen? – Sandy777