68

ファイルを SFTP (SSH FTP) サーバーにアップロードできる無料の .NET ライブラリは存在しますか?これにより、アップロードの問題で例外がスローされ、その進行状況を監視できますか?

4

5 に答える 5

40

winscpをスクリプト化/制御できますか?

更新: winscp には、SFTP、SCP、および FTPS をサポートするnuget パッケージとして利用可能な.NET ライブラリが含まれるようになりました。

于 2008-09-17T19:09:38.860 に答える
8

次のコードは、 Rebex SFTPコンポーネントを使用して 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();

次のように LogWriter プロパティを使用して、完全な通信ログをファイルに書き込むことができます。出力例 (FTP コンポーネントからのものですが、SFTP 出力も同様です) は、こちら にあります

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

または、次のようにイベントを使用して通信を傍受します。

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

詳細については、チュートリアルを参照するか、試用版をダウンロードしてサンプルを確認してください。

于 2010-06-16T23:04:18.503 に答える
2

.net フレームワーク内でこれを解決する方法はありません。

http://www.eldos.com/sbb/sftpcompare.phpには、非フリー オプションのリストが概説されています。

最善の策は、Granados を使用して SSH を拡張することです。http://www.routerek.co.jp/ja/product/varaterm/granados.html

于 2008-09-17T19:07:32.437 に答える
0

残念ながら、.NET Framework 自体にはありません。FileZilla と統合できることを願っていますが、インターフェイスを公開しているとは思いません。彼らはスクリプトを持っていると思いますが、明らかにそれほどきれいではありません。

SFTP を実行するプロジェクトで CuteFTP を使用しました。.NET ラッパーを作成した COM コンポーネントを公開します。問題はアクセス許可です。CuteFTP をインストールした Windows 資格情報で問題なく動作しますが、他の資格情報で実行するには、DCOM で権限を設定する必要があります。

于 2008-09-17T19:09:06.413 に答える
0

別の非無料オプションについては、edtFTPnet/PROを試してください。SFTP を包括的にサポートし、必要に応じて FTPS (もちろん FTP) もサポートします。

于 2009-05-19T02:23:59.143 に答える