お世話になっております。
当方、現在ローカルサーバのフォルダにアクセスし、
その中に存在する複数のファイルをSFTP通信を用いて
別サーバのフォルダへアップロード(コピー)する処理を作っております。
環境はC#とVisualStudio2017
コンソールアプリケーションです。
ローカルサーバのフォルダ内には、アップロード対象となるファイルとそうでない
ファイルがありますので、アップロード対象となるファイルのみを抽出した
リスト(表現が曖昧で申し訳ありません。)を作成して、
そのリストを元に1ファイルずつアップロード処理を行いたいのですが、
そのリストを作る方法が思い浮かびません。
SFTP通信はSSH.NETを使用してます
C#
1 private ConnectionInfo conn; 2 3 //接続先情報作成 4 //接続先とユーザID、秘密鍵ファイル、パスワードを元に接続情報を作成 5 var authMethod = new PrivateKeyAuthenticationMethod(ユーザ名, new PrivateKeyFile(秘密鍵ファイル, パスフレーズ)); // 認証はユーザーIDと秘密鍵ファイルとパスフレーズで行う 6 conn = new ConnectionInfo(サーバ名, 22, ユーザ名, authMethod); // 接続先、使用ポート、ユーザーID、↑の認証 で接続情報を作成 7 8 //接続準備 9 using (var sftp = new SftpClient(conn)) 10 { 11 //接続開始 12 sftp.Connect(); 13 14 //ローカルサーバのディレクトリ情報 15 var di = new DirectoryInfo(ローカルサーバのフォルダパス); 16 17 //.zipで抽出 18 FileInfo[] files = di.GetFiles(".zip", SearchOption.AllDirectories); 19 20 //アップロード対象となるファイルを格納するリストの元作成(ここから不明) 21 22 //アップロード対象ファイルのリストに追加する処理 23 foreach (var items in files) 24 { 25 //ここでitemsの中身を作成したリストに追加していきたい 26 } 27 28 //ここから作成したリストを元にアップロード処理の予定 29 30 //切断 31 sftp.Disconnect(); 32 }
まだまだ初心者のため、間違っている点が多いかと思いますが、
皆様の知恵をお貸しください。よろしくお願いいたします。
本人にわからないものがどうしてこちらにわかると? 拡張子とかフォルダとか何か条件がないんですか?
ソースの中に.zipファイルを条件に抽出しています・・。わかりづらく、申し訳ありません。
ソースの中に zip ファイルを条件に抽出という意味がわかりませんが、zip ファイルの中に含まれるものをアップロードしたいという意味なら zip ファイルの中のリストを列挙すればいいと思います。
すみません、言葉足らずでした。ローカルサーバのフォルダには.txtや.zipといった様々な拡張子のファイルがあるので、その中から.zipファイルを取り出し、存在する分だけリスト(正式にはなんというのかわからないのでこの表現)に一時的に保存して、それを元に1ファイルずつアップロードしたいということです。zipファイルそのものです・・。
何故、リストに一時的に保存したいのかというと、万が一アップロードに失敗したら、成功したファイルをリストから除き、再度失敗したファイルのみでアップロードしたい、と考えたからです。情報不足でした。すみません。
回答2件
あなたの回答
tips
プレビュー