设为首页 收藏本站
查看: 854|回复: 0

Ftp下载文件的代码

[复制链接]

尚未签到

发表于 2015-5-28 10:07:38 | 显示全部楼层 |阅读模式
  
        
            
               
                    服务器地址
               
               
                    192.168.0.1
               
               
                    服务器端口
               
               
                    80
               
               
                    服务器账户
               
               
                    administrator
               
               
                    服务器密码
               
               
                    admin
               
            
            
               
                    查询路径
               
               
                    MyFiles
               
               
                    查询文件
               
               
                    
               
               
                    Ftp操作
               
               
                    
               
               
                    
               
               
                     
            
        
   
  ------------------------------------------------------------
  public partial class Test01 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
  protected void btnGet_Click(object sender, EventArgs e)
        {
            this.Bind();
        }
  private void Bind()
        {
            FtpHelper obj = null;
            string[] data = null;
            try
            {
                obj = new FtpHelper(
                    txtServer.Text.Trim(),
                    txtUid.Text.Trim(),
                    txtPwd.Text.Trim(),
                    int.Parse(txtPort.Text.Trim())
                    );
                data = obj.GetFileList(
                    txtPath.Text.Trim()
                    );
                gvShow.DataSource = data;
                gvShow.DataBind();
  }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", string.Format("alert('发生异常,{0}')", ex.Message), true);
            }
            finally
            {
                obj = null;
            }
        }
  protected void btnDown_Click(object sender, EventArgs e)
        {
            FtpHelper obj = null;
            string[] data = null;
            try
            {
                obj = new FtpHelper(
                    txtServer.Text.Trim(),
                    txtUid.Text.Trim(),
                    txtPwd.Text.Trim(),
                    int.Parse(txtPort.Text.Trim())
                    );
                data = obj.GetFileList(
                    txtPath.Text.Trim()
                    );
                if (data != null && data.Length > 0)
                {
                    gvShow.DataSource = data;
                    gvShow.DataBind();
                    foreach (string filename in data)
                    {
                        obj.Download(
                            "MyFiles/MyFiles/",
                            filename,
                            "C:\\Documents and Settings\\Administrator\\桌面\\DownLoad\\",
                            "__" + filename
                            );
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", string.Format("alert('发生异常,{0}')", ex.Message), true);
            }
            finally
            {
                obj = null;
            }
        }
    }
  
------------------------------------------------------------
  public class FtpHelper:IDisposable
    {
        private string ftpServerIP = "";
        private string ftpUserID = "";
        private string ftpPassword = "";
        private int port = 80;
  public void Dispose()
        {
            if (this != null)
            {
                this.ftpServerIP = this.ftpUserID = this.ftpPassword = null;
                this.port = 0;
            }
        }
  ///
        /// 打开Ftp文件路径
        ///
        ///
        ///
        private System.Net.FtpWebRequest Connect(String path)//连接ftp
        {
  // 根据uri创建FtpWebRequest对象
            System.Net.FtpWebRequest reqFTP = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(new Uri(path));
  // 指定数据传输类型
            reqFTP.UseBinary = true;
  // ftp用户名和密码
            reqFTP.Credentials = new System.Net.NetworkCredential(ftpUserID, ftpPassword);
  return reqFTP;
        }
  ///
        /// 登陆连接Ftp服务器
        ///
        /// 服务器IP
        /// 服务器账户
        /// 服务器密码
        ///
        public FtpHelper(string ftpServerIP, string ftpUserID, string ftpPassword, int port)
        {
            this.ftpServerIP = ftpServerIP;
  this.ftpUserID = ftpUserID;
  this.ftpPassword = ftpPassword;
  this.port = port;
        }
  ///
        /// 从ftp服务器上获得文件列表
        ///
        /// 注意,参数是MyFiles/Test/,而非ftp://192.168.0.1/MyFiles/Test/
        ///
        ///
        public string[] GetFileList(string path, string WRMethods)
        {
            string[] downloadFiles;
            System.Text.StringBuilder result = new System.Text.StringBuilder();
            System.Net.FtpWebRequest reqFTP = null;
            System.Net.WebResponse response = null;
            System.IO.StreamReader reader = null;
            string line = "";
            try
            {
                reqFTP = Connect(path);
  reqFTP.Method = WRMethods;
  response = reqFTP.GetResponse();
  reader = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名
  line = reader.ReadLine();
  while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
  // to remove the trailing '\n'
                result.Remove(result.ToString().LastIndexOf('\n'), 1);  
                downloadFiles = result.ToString().Split('\n');
            }
  catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                downloadFiles = null;
            }
            finally
            {
                result = null;
                if (reqFTP != null)
                {
                    reqFTP = null;
                }
                if (response != null)
                {
                    response.Close();
                }
                if (reader != null)
                {
                    reader.Close();
                }
            }
  return downloadFiles;
        }
  ///
        /// 从ftp服务器上获得文件列表
        ///
        /// 注意,参数是MyFiles/Test/,而非ftp://192.168.0.1/MyFiles/Test/
        ///
        public string[] GetFileList(string path)
        {
            return GetFileList("ftp://" + ftpServerIP + "/" + path, System.Net.WebRequestMethods.Ftp.ListDirectory);
        }
  ///
        /// 从ftp服务器上获得文件列表
        ///
        ///
        public string[] GetFileList()
        {
            return GetFileList("ftp://" + ftpServerIP + "/", System.Net.WebRequestMethods.Ftp.ListDirectory);
        }
  ///
        /// 上面的代码实现了从ftp服务器下载文件的功能
        ///
        /// Ftp路径:MyFiles/Test
        /// Ftp文件:Test01.txt
        /// 本地路径:C:\\Tmp\\
        /// 保存名称:newFile.txt
        ///
        public bool Download(string ftpFilePath, string ftpFileName, string clientFilePath, string clientFileName)
        {
            bool flag = false;
            string clientfile = "";
            string ftpfile = "";
            string url = "";
            System.Net.FtpWebRequest reqFTP = null;
            System.Net.FtpWebResponse response = null;
            System.IO.Stream ftpStream = null;
            System.IO.FileStream outputStream = null;
            long cl = 0;
            int bufferSize = 2048;
            int readCount;
            byte[] buffer = null;  
            try
            {
                clientfile = clientFilePath + clientFileName;
                ftpfile = ftpFilePath + ftpFileName;
                if (System.IO.File.Exists(clientfile))
                {
                    throw new Exception(string.Format("本地文件{0}已存在,无法下载", clientfile));
                }
                url = "ftp://" + ftpServerIP + "/" + ftpfile;
                reqFTP = Connect(url);//连接  
                response = (System.Net.FtpWebResponse)reqFTP.GetResponse();
                ftpStream = response.GetResponseStream();
                cl = response.ContentLength;
                buffer = new byte[bufferSize];
                readCount = ftpStream.Read(buffer, 0, bufferSize);
  outputStream = new System.IO.FileStream(clientfile, System.IO.FileMode.Create);
                while (readCount > 0)
                {
                    outputStream.Write(buffer, 0, readCount);
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                }

                flag = true;
            }
  catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                clientfile = null;
                ftpfile = null;
                url = null;
                if (reqFTP != null)
                {
                    reqFTP = null;
                }
                if (response != null)
                {
                    response.Close();
                }
                if (ftpStream != null)
                {
                    ftpStream.Close();
                }
                if (outputStream != null)
                {
                    outputStream.Close();
                }
                if (buffer != null)
                {
                    buffer = null;
                }
            }
  return flag;
        }
  }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71399-1-1.html 上篇帖子: TCP/IP协议族之应用层协议(FTP、TFTP) 下篇帖子: ftp no route to host iptables
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表