[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.