2010年6月1日

FTPでファイルを送りたい。てか受信もしたい。その前にログインしたい。

FTP接続時になぜか550エラーが出るので調べてみた



  1. public FtpWebRequest FTPWReq;
  2. public FtpWebResponse FTPWRes;
  3. public NetworkCredential FTPCredential;
  4. FTPCredential = new NetworkCredential(ユーザID, パスワード);
  5. FTPWReq = (FtpWebRequest)WebRequest.Create("ftp://" + FTPアドレス+ "/" + FTPホーム);
  6. FTPWReq.Credentials = FTPCredential;
  7. FTPWReq.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
  8. // 基本的に接続を維持する
  9. FTPWReq.KeepAlive = true;
  10. FTPWReq.UseBinary = false;
  11. FTPWReq.UsePassive = true;
  12. // 接続実行
  13. FTPWRes = (FtpWebResponse)FTPWReq.GetResponse();
と接続を実行するも550のエラーが御帰宅・・・



なにがおかしいのかあーでもないこーでもないとカタカタ打つこと数時間(長い!)
FTPアドレスの下にディレクトリがなければ素直に繋がるのは確認できた。

だが。それじゃあ意味がない。
だってディレクトリ移動のコマンドなんてFTPWebRequestに存在しないんだもん(≡д≡)

さてどうすっぺと調べていると
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=41930&forum=7
なにやら耳寄りな情報が!

どうもFTPアドレスとディレクトリの接続部に「%2f」を追加すると上手くいくらしい。

で、
FTPWReq = (FtpWebRequest)WebRequest.Create("ftp://" + FTPアドレス + "/%2f" + FTPホーム);
に直してみる。

・・・あ、繋がったorz

ていうか、%2fって「/」、ですよね・・・