昨天生成网站文件夹和文件的代码
    protected void Button3_Click(object sender, EventArgs e)
    {   
        loadNodes(Server.MapPath("~/"));
        Response.Write(ifile);
    }
    void loadNodes(string path)
    {
        DirectoryInfo mainDir = new DirectoryInfo(path);
        try
        {
            Response.Write("<B>" + mainDir.Name + "</b><br>");            //遍历文件目录            foreach (FileInfo f in mainDir.GetFiles())
            {
                //增加文件
                Response.Write(GetVirPath(f.FullName) + "<br>");
                //fileview
                ifile++;            }            foreach (DirectoryInfo d in mainDir.GetDirectories())
            {
                //递归调用
                loadNodes(d.FullName);                //                loadNodes( d.FullName);
            }
        }
        catch (Exception er)
        {            Response.Write(er.ToString());
        }        
        
    }
    string GetVirPath(string FullName)
    {        FullName = FullName.Replace(Server.MapPath("~"), "");
        FullName = Request.ApplicationPath + FullName.Replace("\\", "/");
        return FullName;
    }
今天用了发现了一个问题
不是这段代码有错,而是我要取得的是FTP服务器的文件目录
比如:
我有A网,B网
已知B网的FTP用户名和密码
我要在A网用程序得到B网的文件夹和文件路径
所以上面那段代码是放在A网的
而他的功能是得到A网的文件夹和文件路径
而不是得到B网的文件夹和文件目录谢谢 急啊

解决方案 »

  1.   

    办法1.ftp也可得到目录和文件. 
    2.访问B网中的一个aspx文件或webservice把目录列表下载下来就可.
      

  2.   

    你要做的实际是一个ftp客户端
    直接使用socket编程就成了也可以直接调用ftp命令行
      

  3.   

    从安全角度上考虑,不适于从web上直接调用ftp命令。
    慕白兄的好,其实只要放在aspx 在B网下做接口中转就解决了
      

  4.   

    但如果是放在B网的话,那下来的目录和文件又怎么放在客户端而不是服务器端呢
    =============
    放在B网,得到B的目录结构,可用ftp一个一个去下载,或者用http一个一个去下载.
      

  5.   

    但现在主要是放在A网得到B网
    void loadNodes(string path)
        {
            DirectoryInfo mainDir = new DirectoryInfo(path);
            try
            {
                Response.Write("<B>" + mainDir.Name + "</b><br>");            //遍历文件目录            foreach (FileInfo f in mainDir.GetFiles())
                {
                    //增加文件
                    Response.Write(GetVirPath(f.FullName) + "<br>");
                    //fileview
                    ifile++;            }            foreach (DirectoryInfo d in mainDir.GetDirectories())
                {
                    //递归调用
                    loadNodes(d.FullName);                //                loadNodes( d.FullName);
                }
            }
            catch (Exception er)
            {            Response.Write(er.ToString());
            }        
            
        }
    这里要怎么改啊
    谢谢
      

  6.   

    但现在主要是放在A网得到B网
    =============
    放在A网这样写肯定是得不到B网的.
      

  7.   

    那怎么用这种方法得到B网的目录
    WebRequestMethods.Ftp.ListDirectory
      

  8.   

    Request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; //列表
    这里用  ListDirectoryDetails得到的文件名如下所示:
    12-30-06  12:17AM               283704 a
    12-29-06  10:52PM               284760 a.123
    12-29-06  10:52PM               191116 a.2342
    12-29-06  10:52PM               174104 a.wav
    01-10-07  11:56PM       <DIR>          aaa
    这样就可以判断是文件还是文件夹。如果是文件夹,继续进入。做成递归
      

  9.   

    其实做一个aspx或webservice放在b网站就可以了.A网站用winform程序访问b网站的aspx或webservice得到目录列表,很容易的.
      

  10.   

    12-30-06  12:17AM               283704 a
    12-29-06  10:52PM               284760 a.123
    12-29-06  10:52PM               191116 a.2342
    12-29-06  10:52PM               174104 a.wav
    01-10-07  11:56PM       <DIR>          aaa
    一行判断是否有<DIR>有是文件夹没有就是文件
      

  11.   

    string s="12-30-06  12:17AM               283704 a"
    怎么用\t拆分啊。。你说的我不太清楚我想用
    s.resplce("  "," ").Split(' ')  
    这种方法折分不知道你有没有更好的办法
      

  12.   

    drw-rw-rw- 1 user group 0 Dec 29 11:36 .
    drw-rw-rw- 1 user group 0 Dec 29 11:36 ..
    -rw-rw-rw- 1 user group 16388 Dec 29 11:36 Javascript.rar
    -rw-rw-rw- 1 user group 2122504 Dec 29 11:32 Yingyi.rar
    -rw-rw-rw- 1 user group 30514217 Dec 27 15:41 cnepa2006-12-28.rar
    drw-rw-rw- 1 user group 0 Jul 27 14:03 databases
    drw-rw-rw- 1 user group 0 Jul 27 14:03 logfiles
    -rw-rw-rw- 1 user group 1622 Dec 28 17:17 mydes.cs
    drw-rw-rw- 1 user group 0 Aug 12 15:36 others
    drw-rw-rw- 1 user group 0 Jan 11 20:14 wwwroot
    -rw-rw-rw- 1 user group 28755 Dec 29 11:34 教程.rar我读到的怎么是这个样子的呢
    会不会不同服务器有不同啊
    谢谢
      

  13.   

    中国易网http://www.1-space.cn
    【100MB  支持ASP/cgi/php     70 RMB/1年  】
    【1G空间 支持ASP cgi php          200 RMB/1年 】
    【     现在购买1G空间,cn域名只卖25        】
     【100M共享1u服务器南京电信托管4300,2U托管4500,全国最低价】
      

  14.   

    drw-rw-rw- 1 user group 0 Jan 11 20:14 wwwroot
    -rw-rw-rw- 1 user group 28755 Dec 29 11:34 教程.rar
    最后的lastindexof(" ")可以得出
    wwwroot 教程.rar
    但是这里如何判断他是不是目录呢
      

  15.   

    或者,把你的ftp服务器的目录列表模式改为ms-dos
      

  16.   

    drw-rw-rw-  1    user    group     0    Jan 11 20:14   wwwroot
    其实是这样的只是多个空格给去掉了
    但Jan 11 20:14 这里里面也有空格啊
    还有你说各种服务器不同那不就这种办法没用了
    如你的
    12-30-06  12:17AM               283704 a
    12-29-06  10:52PM               284760 a.123
    12-29-06  10:52PM               191116 a.2342
    12-29-06  10:52PM               174104 a.wav
    01-10-07  11:56PM       <DIR>          aaa
    面我的
    drw-rw-rw- 1 user group 0 Jan 11 20:14 wwwroot
    -rw-rw-rw- 1 user group 28755 Dec 29 11:34 教程.rar
      

  17.   

    你的ftp服务器是windows还是unix?
      

  18.   

    windows在fpt站点属性中主目录 -->目录列表样式 改为ms-dos
      

  19.   

    我们是没有办法操作fpt的
    现在是要求只提供 ip user pass
    让你用程序把B网的东西下下来不能去操作B网的主机