[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節を省いていますし、ファイルの内容を全部メモリに読み込んでいます。

実際にそのまま用いずエラー処理や巨大なファイルの扱いなど適宜変更してみてください。

  • ブックマーク : アクセス: 24,374回
  • カテゴリー : C#
  • キーワード : ,

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

33 queries. HTML convert time: 0.073 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン