接着上一篇说。

上一篇说了根据配置文件获取路径,并判断路径在服务器中是否存在。如果不存在则在服务器中建立一个。

然后就是往路径下面传输文件了。、

代码:

  1. //连接ftp
  2. private void Connect(String path)
  3. {
  4. // 根据uri创建FtpWebRequest对象
  5. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
  6. // 指定数据传输类型
  7. reqFTP.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
  8. reqFTP.UseBinary = true;
  9. reqFTP.UsePassive = false;
  10. // ftp用户名和密码
  11. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  12. }
  1. public void Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能
  2. {
  3. FileInfo fileInf = new FileInfo(filename);
  4. string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
  5. Connect(uri);//连接
  6. // 默认为true,连接不会被关闭
  7. // 在一个命令之后被执行
  8. reqFTP.KeepAlive = false;
  9. // 指定执行什么命令
  10. reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
  11. // 上传文件时通知服务器文件的大小
  12. reqFTP.ContentLength = fileInf.Length;
  13. // 缓冲大小设置为kb
  14. int buffLength = ;
  15. byte[] buff = new byte[buffLength];
  16. int contentLen;
  17. // 打开一个文件流(System.IO.FileStream) 去读上传的文件
  18. FileStream fs = fileInf.OpenRead();
  19. try
  20. {
  21. int allbye = (int)fileInf.Length;
  22. int startbye = ;// 把上传的文件写入流
  23. Stream strm = reqFTP.GetRequestStream();//根据服务器的FTP配置不同,要使用不同的模式,否则会报错
  24. // 每次读文件流的kb
  25. contentLen = fs.Read(buff, , buffLength);// 流内容没有结束
  26. while (contentLen != )
  27. {
  28. // 把内容从file stream 写入upload stream
  29. strm.Write(buff, , contentLen);
  30. contentLen = fs.Read(buff, , buffLength);
  31. startbye += buffLength;
  32. }// 关闭两个流
  33. strm.Close();
  34. fs.Close();
  35. }
  36. catch (Exception ex)
  37. {
  38. this.WriteLog("上传失败,原因: " + ex.Message);
  39.  
  40. fs.Close();
  41. }
  42.  
  43. }
  1. /// <summary>
  2. /// 下载文件
  3. /// </summary>
  4. /// <param name="fileName"></param>
  5. /// <returns></returns>
  6. public Byte[] Download(string fileName)/**/////上面的代码实现了从ftp服务器下载文件的功能
  7. {
  8. Byte[] rtn = null;
  9. try
  10. {
  11. long allbye = (long)GetFileSize(fileName);
  12. string url = "ftp://" + ftpServerIP + "/" + fileName;
  13. Connect(url);//连接
  14. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  15. reqFTP.KeepAlive = false;
  16. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  17. Stream ftpStream = response.GetResponseStream();
  18. long cl = response.ContentLength;
  19. int bufferSize = ;
  20. int readCount = ;
  21. byte[] buffer = new byte[bufferSize];
  22. readCount = ftpStream.Read(buffer, , bufferSize);
  23. MemoryStream mstream = new MemoryStream();
  24. int startbye = ;
  25. while (readCount > )
  26. {
  27. mstream.Write(buffer, , readCount);
  28.  
  29. readCount = ftpStream.Read(buffer, , bufferSize);
  30. startbye += readCount;
  31. }
  32. rtn = mstream.ToArray();
  33. ftpStream.Close();
  34. response.Close();
  35. mstream.Close();
  36. return rtn;
  37. }
  38. catch (Exception ex)
  39. {
  40. //errorinfo = string.Format("因{0},无法下载", ex.Message);
  41. throw new Exception("下载失败,原因: " + ex.Message);
  42. }
  43. }

c# ftp 上传文件 与 下载文件的更多相关文章

  1. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

    在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...

  2. 批处理向FTP上传指定属性的文件 批处理增量备份的例子

    使用windows批处理向FTP上传具有指定属性的文件,类似增量备份功能. 对一个目录里的几个文件自动上传FTP时只上传有归档属性的文件,然后FTP上传成功后自动清除(本机)刚上传文件的归档属性. 类 ...

  3. 20160113006 asp.net实现ftp上传代码(解决大文件上传问题)

    using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using S ...

  4. Xshell 本地上传、远程下载文件

    1.Xshell登录工具在创建会话的时候,点击最下面的ZMODEM,可以填写下载的路径和加载的路径:2个路径可以一样也可以不一样: 在下载的时候可以下载到相应的路径去.(我设置的是下载前始终询问) 2 ...

  5. Selenium(十一):设置元素等待、上传文件、下载文件

    1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...

  6. ftp上传html文件

    在用ftp上传当个html文件时,发现html文件会被压缩成一行,在html中的单行注释将后面的代码都注释掉了,导致网页不能正常访问. 8uftp.FlashFXP.filezilla 在这三个ftp ...

  7. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  8. ftp上传与下载文件

    准备工作 服务器已经配置好ftp服务 服务器linux centos 7.4 搭建ftp服务器:https://www.cnblogs.com/mmzs/p/10601683.html 需要用到的ja ...

  9. ftp上传或下载文件工具类

    FtpTransferUtil.java工具类,向ftp上传或下载文件: package utils; import java.io.File; import java.io.FileOutputSt ...

  10. java客户端调用ftp上传下载文件

    1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...

随机推荐

  1. hadoop 之Hadoop生态系统

    1.Hadoop生态系统概况 Hadoop是一个能够对大量数据进行分布式处理的软件框架.具有可靠.高效.可伸缩的特点. Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YAR ...

  2. 什么是spark(六)Spark中的对象

    Spark中的对象 Spark的Conf,极简化的场景,可以设置一个空conf给sparkContext,在执行spark-submit的时候,系统会默认给sparkContext赋一个SparkCo ...

  3. SSH远程登录CentOS服务器

    1.把ssh默认远程连接端口修改为2200编辑防火墙配置:vi /etc/sysconfig/iptables防火墙增加新端口2222 -A INPUT -m state --state NEW -m ...

  4. Zookeeper的shell操作

    一.客户端连接服务器 zkCli.sh start 二.命令操作 进入到客户端操作行,键入help 查看zookeeper命令列表 常用命令 1) 查看节点列表:ls 路径 2) 创建节点:creat ...

  5. hyperledger fabric共识组件分析 --背书策略

    在fabric中,共识过程意味着多个节点对于某一批交易的发生顺序.合法性以及它们对账本状态的更新结构达成一致的观点.满足共识则意味着多个节点可以始终保证相同的状态,对于以同样顺序到达的交易可以进行一致 ...

  6. linux保存的设置用户/组ID(set-user-ID)的测试

    直接贴代码和结果 // FileName: id.cpp #include <iostream> #include <unistd.h> using namespace std ...

  7. HDOJ5883(欧拉路)

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  8. java代码=====实现修改while()

    总结: package com.mmm; public class cse { public static void main(String[] args) { // int count=0;你妹,我 ...

  9. ElasticSearch所使用的倒排索引的思想和使用场景

    背景: 在关系数据库系统里,索引是检索数据最有效率的方式,.但对于搜索引擎,它并不能满足其特殊要求: 1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至 ...

  10. 一、Jetty介绍

    简介: Jetty 是一个用 Java 实现.开源.基于标准的,并且具有丰富功能的 Http 服务器和 Web 容器,可以免费的用于商业行为.Jetty 这个项目成立于 1995 年,现在已经有非常多 ...