📢 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> | ||
以下の例では、リモート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> | ||