首页 文章

ftpWebReponse(ListDirectory)FTP批准的登录过程,但不返回文件夹数据

提问于
浏览
0

我一直在尝试使用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”为空 . 我真正想要的是查看哪些文件夹可用,这样我就可以看到FTP服务器的原始程序员如何构建他们的文件夹,以及他们使用的命名约定 . 如果该程序员不再可用,这可能吗?

1 回答

  • 0

    我只是有一个疯狂的想法,结果证明它有效!基本上,我改变了前几行,如下所示:

    Uri uri = new Uri("ftp://sampleftpplace.com//");
    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri);
    

    首先,我使用了命令Uri . 不确定这是否重要,但真正重要的是URL地址中的第二个“/” . 我认为在我添加之前服务器没有将其视为根目录 . 一旦我把它放进去,我现在正在看文件夹 . 谢谢!

相关问题