• 締切済み

[C#]FTPでの複数のファイルのアップロード

ネットで調べたところ1つのファイルであれば、 下記の記述でアップロードできることがわかったのですが、 別々のフォルダにあるにファイルを複数同時にアップロードするプログラムがわかりません。 どなたかご教示ください。よろしくお願いいたします。 using System; using System.Net; using System.IO; class FtpWebPut {  static void Main()  {   string uri = "ftp://servername/Upload/secret.png";   string myFile = "tmp.png";   WebRequest req = WebRequest.Create(uri);   req.Credentials = new NetworkCredential("user01", "mypassword");   req.Method = WebRequestMethods.Ftp.UploadFile;   using (Stream st = req.GetRequestStream())   using (FileStream fs = new FileStream(myFile, FileMode.Open))   {    Byte[] buf = new Byte[1024];    int count = 0;    do    {     count = fs.Read(buf, 0, buf.Length);     st.Write(buf, 0, count);    }    while (count != 0);   }  } }

みんなの回答

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

FTPで複数を同時にとなると、先の方も書いているようにマルチスレッドにする方法が良いと思います。 その場合、FTP接続は同じアカウントを使う予定でしょうか?それとも別のアカウントでしょうか? FTPサーバによっては、1つのFTPアカウントに対して1つの接続しかできないのがあるので、 マルチスレッドで実装するなら、FTPアカウントも別にするのが安心です。

sukapotan
質問者

お礼

御回答ありがとうございます。マルチスレッドでする方法で以前作っており、同時に複数のファイルを一度に送る方法を試してみたかったので今回質問しました。質問に回答いただきありがとうございました。

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

「C#」と「マルチスレッド」というキーワードで 検索してみてください。一杯例が出てます。 そこで、1スレッド-1ファイルとすれば問題 なく実現できるでしょう。 経験から言うと、マルチスレッドは理論値 よりも効率がよいようです。シリアルに2個 ファイルを転送する時間はマルチスレッドで 2個ファイルを同時に転送する時間×2より 長いことが多いものです。マシンスペックにも よりますが、ダブルコア、1Gメモリの場合では 64スレッドくらいまでは効率が下がることは ないと思います。

sukapotan
質問者

お礼

御回答ありがとうございます。検討してみます。ご教示ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A