📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
編集の要約なし
52行目: 52行目:
<br><br>
<br><br>


== 単一のファイルのダウンロード ==
== 単一のファイルのダウンロード / アップロード ==
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
  using System;
  using System;
117行目: 117行目:
そのため、ディレクトリ内の全てのファイルをダウンロードする場青は、サーバ上にあるディレクトリのパスを指定して、個別にダウンロードする必要がある。<br>
そのため、ディレクトリ内の全てのファイルをダウンロードする場青は、サーバ上にあるディレクトリのパスを指定して、個別にダウンロードする必要がある。<br>
<br>
<br>
以下の例では、サーバ上にある/home/username/testディレクトリ内のファイルを全てダウンロードしている。<br>
以下の例では、リモートPC上にある/home/username/testディレクトリ内のファイルを全てダウンロードしている。<br>
<br>
<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
136行目: 136行目:
   
   
  // ...略
  // ...略
</syntaxhighlight>
<br><br>
== 複数のファイルのアップロード ==
以下の例では、アップロードするファイルのパスを配列で指定して、複数のファイルをリモートPC上にある/home/usernameディレクトリアップロードしている。<br>
ループ処理内において、1つずつファイルを読み込み、<code>UploadFile</code>メソッドを使用する。<br>
<br>
<syntaxhighlight lang="c#">
using System;
using System.IO;
using Renci.SshNet;
class SftpUploadMultipleFiles
{
    static void Main(string[] args)
    {
      // 公開鍵認証の場合
      // 例としてユーザディレクトリ配下の.sshディレクトリ内のsecret_key.pemを秘密鍵として使用
      string secretKeyPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".ssh", "secret_key.pem");
      var authMethod = new PrivateKeyAuthenticationMethod("username", new PrivateKeyFile(secretKeyPath, "finger_print"));
      // パスワード認証の場合(平文)
      //var authMethod = new PasswordAuthenticationMethod("<リモートPCのユーザ名>", "<リモートPCのユーザ名のパスワード>");
      // 接続情報のインスタンス生成
      var connectionInfo = new ConnectionInfo("<リモートPCのIPアドレス または ホスト名>",
                                              <ポート番号  例: 22>,
                                              "<リモートPCのユーザ名>",
                                              authMethod);
      using (var client = new SftpClient(connectionInfo))
      {
          // SSH接続を行う
          client.Connect();
          // リモートPCのユーザディレクトリに移動
          client.ChangeDirectory("/home/username");
          // アップロードするファイルのパスを配列で指定
          string[] filePaths = { "/path/to/file1.txt", "/path/to/file2.jpg", "/path/to/file3.png" };
          foreach (string filePath in filePaths)
          {
            // ファイルを読み込み専用で開く
            using (var fs = File.OpenRead(filePath))
            {
                // ファイル名を取得
                string fileName = Path.GetFileName(filePath);
                // ファイルをアップロード(trueを指定すると上書き可能となる)
                client.UploadFile(fs, fileName, true);
            }
          }
          // SSH接続を切断
          client.Disconnect();
      }
    }
}
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>