最近,老板让我们做一个类似FTP的东西,也就是说有客户端能够自己建立一个帐户(这个帐户是在远程主机中),它能对该帐户里的东西进行操作。而且也能对一个公共的文件夹中的视频文件进行操作。不知哪位高手能给个源码(主机和客户端的都要),或是给个思路什么的,小弟在此先谢谢了。由于小弟新学的C#用的是microsoft visual stdio 2005。最好能给个这方面的东西。小弟在此多谢了。(透漏一点是:老板看到了前些年的无盘系统,呵呵,这下让我们这些新来的小弟无语了,呵呵)。

解决方案 »

  1.   

    服务端就不要自己写了,用ServUFTP就可以了,
    客户端嘛,那个也不难,C#中一个FTP的类FtpWebRequest, 怎么用你可以查一下MSDN
      

  2.   


    /// <summary>
    /// 上传文件
    /// </summary>
    /// <param name="fileinfo">需要上传的文件</param>
    /// <param name="targetDir">目标路径</param>
    /// <param name="hostname">ftp地址</param>
    /// <param name="username">ftp用户名</param>
    /// <param name="password">ftp密码</param>
    public static void UploadFile( FileInfo fileinfo, string targetDir )
    {
    //1. check target
    string target;
    if ( targetDir.Trim() == "" )
    {
    return;
    }
    target = Guid.NewGuid().ToString();  //使用临时文件名
    string URI = FTPTools.Host + targetDir + target;
    ///WebClient webcl = new WebClient();
    System.Net.FtpWebRequest ftp = GetRequest( URI ); //设置FTP命令
    ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
    ftp.UseBinary = true;
    ftp.UsePassive = false; //告诉ftp文件大小
    ftp.ContentLength = fileinfo.Length; const int BufferSize = 2048;
    byte[] content = new byte[BufferSize - 1 + 1];
    int dataRead; //上传文件内容
    using ( FileStream fs = fileinfo.OpenRead() )
    {
    try
    {
    using ( Stream rs = ftp.GetRequestStream() )
    {
    do
    {
    dataRead = fs.Read( content, 0, BufferSize );
    rs.Write( content, 0, dataRead );
    } while ( !( dataRead < BufferSize ) );
    rs.Close();
    } }
    catch
    {
    }
    finally
    {
    fs.Close();
    } } ftp = null; //设置FTP命令
    ftp = GetRequest( URI );
    ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名
    ftp.RenameTo = fileinfo.Name;
    try
    {
    ftp.GetResponse();
    }
    catch
    {
    ftp = GetRequest( URI );
    ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //删除
    ftp.GetResponse();
    }
    finally
    {
    fileinfo.Delete();
    }
    ftp = null;
    }
      

  3.   

    FTP上传下载的
    http://topic.csdn.net/u/20081124/16/237a91eb-5dd0-4e97-8d32-b44259277970.html
    http://topic.csdn.net/u/20081211/10/8a2b858f-f5d2-4e32-891d-604a2941acab.html
      

  4.   

    二楼的你的FTPTools.host和GetRequest是什么呀,是你自己定义的,还是在某个命名空间中的可以直接用的?小弟是菜鸟,呵呵。
      

  5.   

       还有,我想做的是能够像网上邻居那样可以直接看到文件夹或是word、excel等的文件。那样比较直观,呵呵。说白了吧就是在我们开发的软件中有一个类似windos资源管理器一样的东西。可以对远程主机中给定权限的文件夹进行比较直观的操作。还有就是能够对视频文件进行直接播放,而不是等到全部下载完了再播放。
        不知我说不够不够明白,还请高手给个思路,最好是有源码的。
        另外说句题外话,中国的高手真多。让我这个刚毕业的小生惊讶不已,呵呵,改天再给高手们分吧,我还想多听听我高手的意见,呵呵!