最も簡単な方法
.NET Frameworkを使用してFTPサーバーにファイルをアップロードする最も簡単な方法は、WebClient.UploadFile
methodを使用することです。
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");
client.UploadFile("ftp://ftp.example.com/remote/path/file.zip", @"C:\local\path\file.zip");
高度なオプション
あなたがより大きな制御が必要な場合、それはWebClient
(のように提供していないTLS / SSL暗号化、ASCIIモード、アクティブモード、など)を使用しますFtpWebRequest
。簡単な方法は、FileStream
を使用してFTPストリームにコピーするだけですStream.CopyTo
。
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream fileStream = File.OpenRead(@"C:\local\path\file.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
fileStream.CopyTo(ftpStream);
}
進捗監視
アップロードの進行状況を監視する必要がある場合は、コンテンツをチャンクで自分でコピーする必要があります。
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream fileStream = File.OpenRead(@"C:\local\path\file.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
byte[] buffer = new byte[10240];
int read;
while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ftpStream.Write(buffer, 0, read);
Console.WriteLine("Uploaded {0} bytes", fileStream.Position);
}
}
GUIの進行状況(WinForms ProgressBar
)については、C#の例を参照してください:
FtpWebRequestを使用してアップロードの進行状況バーを表示するには
フォルダをアップロードしています
フォルダからすべてのファイルをアップロードする場合は、「
WebClientを使用してファイルのディレクトリをFTPサーバーにアップロードする」を参照してください。
再帰的なアップロードについては、C#でのFTPサーバーへの再帰的なアップロードをご覧ください。