[C#] FtpWebRequest で FTP のファイルアップロード
2011-9-6 23:30

Visual Studio 2010 の C# での FTP ファイルアップロードの実装です。
@IT とかいろいろなところに FTP のサンプルコードはあるのですが、その通りに書いても謎のシステムエラーが出るので、先にアップロードするコンテンツの長さをセットしたところうまくいっています。
private void ftpUpload(string local_file, string server_url)
{
//server_urlは、"ftp://server_name/path/to/filename.ext" の形式
Uri u = new Uri(server_url);
FtpWebRequest ftp_req = (FtpWebRequest)WebRequest.Create(u);
ftp_req.Credentials = new NetworkCredential(default_user, default_pass);
ftp_req.Method = WebRequestMethods.Ftp.UploadFile;
ftp_req.KeepAlive = false;
ftp_req.UseBinary = true;
//ftpReq.UsePassive = false; //PASVモードを無効にする
FileStream fs = new FileStream(local_file, FileMode.Open, FileAccess.Read);
//転送するファイル内容のバイト配列
byte[] bs = null;
bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);
fs.Close();
//アップロードするコンテンツの長さをセット
ftp_req.ContentLength = bs.Length;
Stream reqStrm = ftp_req.GetRequestStream();
reqStrm.Write(bs, 0, bs.Length);
reqStrm.Close();
FtpWebResponse response = (FtpWebResponse)ftpReq.GetResponse();
}
このサンプルコードは try~catch~finally節を省いていますし、ファイルの内容を全部メモリに読み込んでいます。
実際にそのまま用いずエラー処理や巨大なファイルの扱いなど適宜変更してみてください。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.