it-swarm-eu.dev

Wie lade ich eine Datei in C # (.NET) auf einen SFTP-Server hoch?

Existiert eine kostenlose .NET-Bibliothek, mit der ich eine Datei auf einen SFTP-Server (SSH-FTP) hochladen kann, der Ausnahmen bei Problemen mit dem Upload auslöst und die Überwachung seines Fortschritts ermöglicht?

64
Corey

Vielleicht können Sie script/control winscp ?

Update: winscp hat jetzt eine .NET-Bibliothek als Nuget-Paket verfügbar, das SFTP unterstützt, SCP und FTPS

35
Kasprzol

Der folgende Code zeigt, wie eine Datei mit unserer Komponente Rebex SFTP auf einen SFTP-Server hochgeladen wird.

// 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();

Sie können ein vollständiges Kommunikationsprotokoll mithilfe einer LogWriter-Eigenschaft wie folgt in eine Datei schreiben. Beispiele für die Ausgabe (von der FTP-Komponente, aber die SFTP-Ausgabe ist ähnlich) finden Sie hier .

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

oder unter Verwendung von Ereignissen die Kommunikation wie folgt abfangen:

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

Weitere Informationen finden Sie unter Tutorial oder Download eine Testversion und überprüfen Beispiele .

7
Martin Vobr

Im .net-Framework gibt es dafür keine Lösung.

http://www.eldos.com/sbb/sftpcompare.php umreißt eine Liste der unfreien Optionen.

ihre beste Gratiswette ist es, SSH mit Granados zu verlängern. http://www.routrek.co.jp/en/product/varaterm/granados.html

2
ddc0660

Für eine andere unfreie Option versuchen Sie edtFTPnet/PRO . Es bietet umfassende Unterstützung für SFTP und unterstützt bei Bedarf auch FTPS (und natürlich FTP).

0
Bruce Blackshaw

Leider ist es nicht in .NET Framework selbst. Mein Wunsch ist, dass Sie in FileZilla integrieren können, aber ich denke nicht, dass es eine Schnittstelle verfügbar macht. Ich glaube, sie haben Skripte, aber es wird offensichtlich nicht so sauber sein.

Ich habe CuteFTP in einem Projekt verwendet, das SFTP ausführt. Es macht eine COM-Komponente verfügbar, um die ich einen .NET-Wrapper erstellt habe. Der Haken dabei sind die Berechtigungen. Es funktioniert einwandfrei unter den Windows-Anmeldeinformationen, mit denen CuteFTP installiert wurde. Für die Ausführung unter anderen Anmeldeinformationen müssen jedoch Berechtigungen in DCOM festgelegt werden.

0
Mike L