当前位置: 首页 > news >正文

利用FTPClient类实现文件的上传下载功能

 

FTPClient ftp=new FTPClient();

一、新建一个FTP服务器。设置IP/端口,并且设置一个根文件夹exam (根据需要自己设置)

二、连接FTP服务器

   ftp.RemoteHost=this.txtIP.Text.Trim(); //FTP服务器的IP或名称
   ftp.RemotePort=Convert.ToInt32(this.txtPort.Text.Trim()); //端口,默认为21
   ftp.RemotePath="exam";
   if(this.checkBox1.Checked==true)
   {
    ftp.RemoteUser="anonymous";//匿名登陆
    ftp.RemotePass="syringa_12@126.com";//设置一个邮箱即可
   }
   else
   {
    ftp.RemoteUser=this.txtUser.Text.Trim();
    ftp.RemotePass=this.txtPass.Text.Trim();
   }
   Application.DoEvents();
   try
   {
    ftp.Connect(); //连接
   }
   catch(Exception ex)
   {
    MessageBox.Show("与服务器连接失败"+ex.ToString());
   }
   if(ftp.Connected)
   {
    this.lblState.Text="[服务器已连接]";   //连接成功
   }

三、上传文件

  /// <summary>
  /// 上传文件到FTP服务器的方法
  /// </summary>
  /// <param name="str">查询语句</param>
  /// <param name="filename">上传的文件名*.xml</param>
  private void UpLoadFile(string str,string filename)
  {
   DataSet ds=new DataSet();
   DB db=new DB();
   db.Exec4DS(str,"0",out ds);
   ds.WriteXml(Application.StartupPath+"\\UpLoad\\"+filename,XmlWriteMode.WriteSchema);//转化为xml文件
   //上传到Center文件夹
   if(ftp.Connected)
   {
    try
    {
     ftp.ChDir("Center");//兄弟比较笨,不知道怎么判断服务器上文件夹是否存在,所以只好用异常来判断。哪位仁兄有判断的好方法告诉兄弟一声,不胜感觉^_^
    }
    catch
    {
     ftp.MkDir("Center");//在服务器上创建一个文件夹
     ftp.ChDir("Center");//指定为当前目录
    }
    ftp.Put(Application.StartupPath+"\\UpLoad",filename); //本地文件filename上传到FTP服务器的Center文件夹中
    ftp.ChDir("..");//指定上一级目录
   }
  }
四、下载文件
  /// <summary>
  /// 下载所有xml文件到本地DownLoad文件夹
  /// </summary>
  /// <param name="ftpDirectory">FTP服务器上的文件夹</param>
  /// <param name="LocalDirectory">本地文件夹</param>
  private void DownLoadFile(string ftpDirectory,string LocalDirectory)
  {
   //下载文件到本地文件夹
   string[] files;
   if(ftp.Connected)
   {
    this.lblState.Visible=true;
    Application.DoEvents();
    try
    {
     try
     {
      ftp.ChDir(ftpDirectory);
     }
     catch
     {
      ftp.MkDir(ftpDirectory);
      ftp.ChDir(ftpDirectory);
     }
     files=ftp.Dir("*.xml");//遍历FTP服务器ftpDirectory文件夹中的所以xml文件
     if(!Directory.Exists(Application.StartupPath+"\\DownLoad\\"+LocalDirectory))//判断本地是否存在LocalDirectory文件夹
      Directory.CreateDirectory(Application.StartupPath+"\\DownLoad\\"+LocalDirectory);//创建文件夹
     for(int i=0;i<files.Length-1;i++)
     {
      ftp.Get(files[i],Application.StartupPath+"\\DownLoad\\"+LocalDirectory,files[i]);//下载文件到本地文件夹
     }
     ftp.ChDir("..");
    }
    catch(Exception ex)
    {
     MessageBox.Show("下载失败"+ex.ToString());
    }
   }
  }

 

 

 

相关文章:

  • mysql不能使用innodb存储引擎
  • ASP.NET MVC3 异常处理
  • 解决【Unable to make the session state request to the session state server】
  • 如何在IIS里对网站限速
  • msxml3.dll 错误 '80072efd' A connection with the server could not be established
  • 解决IE6浏览器中Div层挡不住Select组件
  • 解决IE6下select z-index 无效
  • Ubuntu下gcc安装及使用
  • Linux(ubuntu)下手动安装 firefox 6 并且添加快捷方式图标
  • ubuntu下如何安装使用SSH
  • 解决 WinSCP 内部编辑器中文乱码问题
  • ubuntu摄像头软件--茄子大头贴
  • 安装ubuntu-tweak
  • 在Ubuntu 中安装VLC
  • Ubuntu 12.04中文输入法的安装
  • 30天自制操作系统-2
  • Consul Config 使用Git做版本控制的实现
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Git的一些常用操作
  • Git学习与使用心得(1)—— 初始化
  • Java反射-动态类加载和重新加载
  • java取消线程实例
  • leetcode46 Permutation 排列组合
  • Less 日常用法
  • PhantomJS 安装
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Vue UI框架库开发介绍
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • windows下mongoDB的环境配置
  • 大整数乘法-表格法
  • 好的网址,关于.net 4.0 ,vs 2010
  • 理解在java “”i=i++;”所发生的事情
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端面试之CSS3新特性
  • 前端性能优化--懒加载和预加载
  • 我从编程教室毕业
  • Java总结 - String - 这篇请使劲喷我
  • scrapy中间件源码分析及常用中间件大全
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (c语言)strcpy函数用法
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (规划)24届春招和25届暑假实习路线准备规划
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (已解决)什么是vue导航守卫
  • (转)setTimeout 和 setInterval 的区别
  • (转)负载均衡,回话保持,cookie
  • .NET 3.0 Framework已经被添加到WindowUpdate