C# 通过代理访问FTP 服务器 下载 文件
注意 是访问FTP 服务器 不是 HTTP  什么代理都行  只要是通过代理访问 就成 
帮帮我吧  小弟真的要失业了 这个弄不出了 。。

解决方案 »

  1.   

    http://topic.csdn.net/t/20040618/08/3102208.html
      

  2.   

    http://www.codeproject.com/KB/dotnet/dotnetftp.aspx
      

  3.   

    从ftp下载文件??我写过一个
    有dos的和基类方法
      

  4.   

    /*
    -------------------------------------------------------------
    作者:hackztx   [别急→慢慢来→总会好的]
    日期:2008-07-14 08:44:46
    参数:从ftp下载文件?? 
    简介:C#
    -------------------------------------------------------------
    */
    我写过一个
    有dos的和基类方法
      

  5.   

    哈哈,失业了,就再找一个。。旧的不去,新的不来。。
    FTP代理。。听说很难。。
      

  6.   

    晕  牛人今天都该上班了吧 
    是 通过代理服务器  访问FTP 服务器 下载文件 我真哭了  期待牛人的出现.....
      

  7.   

    FtpWebRequest.Proxy 
    具体查msdn
      

  8.   


    这个我知道  
    webproxy 实例一个 设置属性 附给 FtpWebRequest.Proxy 
    但是 FtpWebRequest.Proxy  如果 代理是个ftp服务器的话 会异常的  显示不支持FTP代理.
      

  9.   


    不知道你是要自已写代理,还是通过代理来访问ftp?
      

  10.   


    通过代理 访问FTP  终于有人 问到点子上了 帮帮忙吧
      

  11.   

    以前也没接触过,在网上看到的一些代码,整理了一下.
    大概思路是建立代理服务器类,通过FtpWebRequest来进行Ftp操作.NetProxy.cs
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;namespace WindowsApplication4
    {
        public class NetProxy
        {
            string _ProxyAddress = String.Empty;        public string ProxyAddress
            {
                get { return _ProxyAddress; }
            }
            int _ProxyPort = 0;        public int ProxyPort
            {
                get { return _ProxyPort; }
            }        public NetProxy(string proxyAddress, int proxyPort)
            {            
                _ProxyAddress = proxyAddress;            
                _ProxyPort = proxyPort;
            }        /// <summary>
            /// 获得代理服务器
            /// </summary>
            /// <param name="userName">代理用户名</param>
            /// <param name="userKey">代理用户密码</param>
            /// <returns></returns>
            public WebProxy GetProxy(string userName, string userKey)
            {
                WebProxy _WP = new WebProxy(ProxyAddress, ProxyPort);
                //本地地址不使用代理服务器
                _WP.BypassProxyOnLocal = true;            ICredentials credentials = new NetworkCredential(userName, userKey);
                _WP.Credentials = credentials;
                return _WP;            
            }        /// <summary>
            /// 设置全局代理服务
            /// </summary>
            /// <param name="webProxy"></param>
            public void SetAllProxy(WebProxy webProxy)
            {
                WebRequest.DefaultWebProxy = webProxy;
            }        public void Test(string userName, string userKey)
            {
                try
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://www.sina.com.cn"));
                    request.Proxy = GetProxy(userName, userKey);
                    request.UserAgent = "Mozilla/4.0";
                    request.Method = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.AllowAutoRedirect = true;
                    byte[] str = System.Text.Encoding.ASCII.GetBytes("username=admin");
                    request.ContentLength = str.Length;
                    Stream temps = request.GetRequestStream();
                    return true;
                }
                catch (WebException ex)
                {
                    return false;
                }           
              
            }
        }
    }
    Ftp.csusing System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;namespace WindowsApplication4
    {
        public class Ftp
        {
            string _ftpServerIP = String.Empty;        public string FtpServerIP
            {
                get { return _ftpServerIP; }
            }        WebProxy _Proxy = null;        public WebProxy Proxy
            {
                get { return _Proxy; }            
            }        string _ftpUserID = String.Empty;        public string FtpUserID
            {
                get { return _ftpUserID; }            
            }        string _ftpPassword = String.Empty;        public string FtpPassword
            {
                get { return _ftpPassword; }            
            }
            public Ftp(string ftpServerIP, string ftpUserID, string ftpPassword, WebProxy webProxy)
            {
                _ftpServerIP = ftpServerIP;
                _ftpUserID = ftpUserID;
                _ftpPassword = ftpPassword;
                _Proxy = webProxy;
            }        /// <summary>
            /// 创建FTP实体
            /// </summary>
            /// <param name="uri">InterNet的URI信息</param>
            /// <returns>FTP实体</returns>
            private FtpWebRequest CreatFtp(string uri)
            {
                FtpWebRequest _FtpRequest = null;
                _FtpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                //指定文件传输类型
                _FtpRequest.UseBinary = true;
                _FtpRequest.Credentials = new NetworkCredential(FtpUserID, FtpPassword);
                // 默认为true,连接不会被关闭
                // 在一个命令之后被执行
                _FtpRequest.KeepAlive = false;
                //设置代理
                _FtpRequest.Proxy = this.Proxy;
                return _FtpRequest;
            }        /// <summary>
            /// 上传文件
            /// </summary>
            /// <param name="filename">文件全名称</param>
            private void Upload(string filename)
            {
                FileInfo fileInf = new FileInfo(filename);
                string uri = "ftp://" + FtpServerIP + "/" + fileInf.Name;            FtpWebRequest reqFTP = this.CreatFtp(uri);                        // 指定执行什么命令
                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;            // 上传文件时通知服务器文件的大小
                reqFTP.ContentLength = fileInf.Length;            // 缓冲大小设置为2kb
                int buffLength = 2048;            byte[] buff = new byte[buffLength];
                int contentLen;            // 打开一个文件流 (System.IO.FileStream) 去读上传的文件
                FileStream fs = fileInf.OpenRead();            // 把上传的文件写入流
                Stream strm = reqFTP.GetRequestStream();            // 每次读文件流的2kb
                contentLen = fs.Read(buff, 0, buffLength);            // 流内容没有结束
                while (contentLen != 0)
                {
                    // 把内容从file stream 写入 upload stream
                    strm.Write(buff, 0, contentLen);                contentLen = fs.Read(buff, 0, buffLength);
                }            // 关闭两个流
                strm.Close();
                fs.Close();        }        /// <summary>
            /// 下载文件
            /// </summary>
            /// <param name="filePath">路径</param>
            /// <param name="fileName">文件名称</param>
            private void Download(string filePath, string fileName)
            {                        string uri = "ftp://" + FtpServerIP + "/" + fileName;            FtpWebRequest reqFTP = this.CreatFtp(uri);            FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);                        reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;            FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();            Stream ftpStream = response.GetResponseStream();            long cl = response.ContentLength;            int bufferSize = 2048;            int readCount;            byte[] buffer = new byte[bufferSize];            readCount = ftpStream.Read(buffer, 0, bufferSize);            while (readCount > 0)
                {
                    outputStream.Write(buffer, 0, readCount);                readCount = ftpStream.Read(buffer, 0, bufferSize);
                }            ftpStream.Close();            outputStream.Close();            response.Close();        }
        }
    }
      

  12.   

    弄不出来这就开你,LZ老板是不是故意的啊!!要是老板这么苛刻,那就换BOSS
      

  13.   

    恩,顶一下MATLAB资源分享
      

  14.   

     Uri ftpUri = new Uri("ftp://192.168.1.50/ligang/安全法.rar");
                string ftp = "d.sql";
                
                FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpUri);
                IWebProxy pWebOroxy = new WebProxy("http://proxyserver:80/", true);
                ftpRequest.Proxy = pWebOroxy;            FtpWebResponse ftpResponse = null;
                FileStream ftpfile = new FileStream("E:\\WinCE\\FtpCode\\安全法.rar", FileMode.Create);
                ftpRequest.Credentials = new NetworkCredential("liupeng", "liupeng");
                ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                ftpRequest.UseBinary = true;
                ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
                Stream ftpstream = ftpResponse.GetResponseStream();
                byte[] ftpbyte = new byte[2048];
                int readcout = 0;
                readcout = ftpstream.Read(ftpbyte,0,2048);
                while (readcout > 0)
                {
                    ftpfile.Write(ftpbyte,0,readcout);
                    readcout = ftpstream.Read(ftpbyte, 0, 2048);
                }
                ftpfile.Close();
                ftpResponse.Close();
                ftpstream.Close();