Visual C# を使用してリモート FTP サーバーに接続し、サーバー上のフォルダーを一覧表示する実験を行っています。最終的に、ボタンをクリックするだけで、このサーバーにファイルを自動的にアップロードする方法を見つけようとしています。最初のステップは、リモート FTP サーバー上でフォルダーがどのように構成されているかを確認することだと考えました。ただし、デバッグで渡された結果を表示しようとすると、プロセスからエラーを受け取っていないにもかかわらず、空のように見え、デバッグのパラメーターにより、正常にログインしたように見えます。応答データのファイル転送完了メッセージ 226。FtpWebRequest関数でいろいろ試してみましたが、これが私が試した最新のコードです。UsePassive をオフにすると、永久にそこに留まり、サーバーから応答が返ってきません。
private void button4_Click(object sender, EventArgs e)
{
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://sampleftpplace.com/");
ftpRequest.UseBinary = true;
ftpRequest.Credentials = new NetworkCredential("username", "password");
ftpRequest.EnableSsl = true;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpRequest.Proxy = null;
ftpRequest.Timeout = -1;
ftpRequest.KeepAlive = false;
//ftpRequest.UsePassive = false;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
List<string> directories = new List<string>();
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = streamReader.ReadLine();
}
streamReader.Close();
}
「string line = streamReader.Readline();」の場合 が実行されると、変数「line」は null になります。私が実際に求めているのは、使用可能なフォルダーを確認することだけです。これにより、FTP サーバーの元のプログラマーがフォルダーをどのように構成し、どのような命名規則を使用したかを確認できます。そのプログラマーがもう利用できない場合、これは可能ですか?