c# ftp 上传文件 与 下载文件
接着上一篇说。
上一篇说了根据配置文件获取路径,并判断路径在服务器中是否存在。如果不存在则在服务器中建立一个。
然后就是往路径下面传输文件了。、
代码:
- //连接ftp
- private void Connect(String path)
- {
- // 根据uri创建FtpWebRequest对象
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
- // 指定数据传输类型
- reqFTP.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
- reqFTP.UseBinary = true;
- reqFTP.UsePassive = false;
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- }
- public void Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
- Connect(uri);//连接
- // 默认为true,连接不会被关闭
- // 在一个命令之后被执行
- reqFTP.KeepAlive = false;
- // 指定执行什么命令
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- // 上传文件时通知服务器文件的大小
- reqFTP.ContentLength = fileInf.Length;
- // 缓冲大小设置为kb
- int buffLength = ;
- byte[] buff = new byte[buffLength];
- int contentLen;
- // 打开一个文件流(System.IO.FileStream) 去读上传的文件
- FileStream fs = fileInf.OpenRead();
- try
- {
- int allbye = (int)fileInf.Length;
- int startbye = ;// 把上传的文件写入流
- Stream strm = reqFTP.GetRequestStream();//根据服务器的FTP配置不同,要使用不同的模式,否则会报错
- // 每次读文件流的kb
- contentLen = fs.Read(buff, , buffLength);// 流内容没有结束
- while (contentLen != )
- {
- // 把内容从file stream 写入upload stream
- strm.Write(buff, , contentLen);
- contentLen = fs.Read(buff, , buffLength);
- startbye += buffLength;
- }// 关闭两个流
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- this.WriteLog("上传失败,原因: " + ex.Message);
- fs.Close();
- }
- }
- /// <summary>
- /// 下载文件
- /// </summary>
- /// <param name="fileName"></param>
- /// <returns></returns>
- public Byte[] Download(string fileName)/**/////上面的代码实现了从ftp服务器下载文件的功能
- {
- Byte[] rtn = null;
- try
- {
- long allbye = (long)GetFileSize(fileName);
- string url = "ftp://" + ftpServerIP + "/" + fileName;
- Connect(url);//连接
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- reqFTP.KeepAlive = false;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- Stream ftpStream = response.GetResponseStream();
- long cl = response.ContentLength;
- int bufferSize = ;
- int readCount = ;
- byte[] buffer = new byte[bufferSize];
- readCount = ftpStream.Read(buffer, , bufferSize);
- MemoryStream mstream = new MemoryStream();
- int startbye = ;
- while (readCount > )
- {
- mstream.Write(buffer, , readCount);
- readCount = ftpStream.Read(buffer, , bufferSize);
- startbye += readCount;
- }
- rtn = mstream.ToArray();
- ftpStream.Close();
- response.Close();
- mstream.Close();
- return rtn;
- }
- catch (Exception ex)
- {
- //errorinfo = string.Format("因{0},无法下载", ex.Message);
- throw new Exception("下载失败,原因: " + ex.Message);
- }
- }
c# ftp 上传文件 与 下载文件的更多相关文章
- Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)
在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...
- 批处理向FTP上传指定属性的文件 批处理增量备份的例子
使用windows批处理向FTP上传具有指定属性的文件,类似增量备份功能. 对一个目录里的几个文件自动上传FTP时只上传有归档属性的文件,然后FTP上传成功后自动清除(本机)刚上传文件的归档属性. 类 ...
- 20160113006 asp.net实现ftp上传代码(解决大文件上传问题)
using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using S ...
- Xshell 本地上传、远程下载文件
1.Xshell登录工具在创建会话的时候,点击最下面的ZMODEM,可以填写下载的路径和加载的路径:2个路径可以一样也可以不一样: 在下载的时候可以下载到相应的路径去.(我设置的是下载前始终询问) 2 ...
- Selenium(十一):设置元素等待、上传文件、下载文件
1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...
- ftp上传html文件
在用ftp上传当个html文件时,发现html文件会被压缩成一行,在html中的单行注释将后面的代码都注释掉了,导致网页不能正常访问. 8uftp.FlashFXP.filezilla 在这三个ftp ...
- Java ftp 上传文件和下载文件
今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...
- ftp上传与下载文件
准备工作 服务器已经配置好ftp服务 服务器linux centos 7.4 搭建ftp服务器:https://www.cnblogs.com/mmzs/p/10601683.html 需要用到的ja ...
- ftp上传或下载文件工具类
FtpTransferUtil.java工具类,向ftp上传或下载文件: package utils; import java.io.File; import java.io.FileOutputSt ...
- java客户端调用ftp上传下载文件
1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...
随机推荐
- hadoop 之Hadoop生态系统
1.Hadoop生态系统概况 Hadoop是一个能够对大量数据进行分布式处理的软件框架.具有可靠.高效.可伸缩的特点. Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YAR ...
- 什么是spark(六)Spark中的对象
Spark中的对象 Spark的Conf,极简化的场景,可以设置一个空conf给sparkContext,在执行spark-submit的时候,系统会默认给sparkContext赋一个SparkCo ...
- SSH远程登录CentOS服务器
1.把ssh默认远程连接端口修改为2200编辑防火墙配置:vi /etc/sysconfig/iptables防火墙增加新端口2222 -A INPUT -m state --state NEW -m ...
- Zookeeper的shell操作
一.客户端连接服务器 zkCli.sh start 二.命令操作 进入到客户端操作行,键入help 查看zookeeper命令列表 常用命令 1) 查看节点列表:ls 路径 2) 创建节点:creat ...
- hyperledger fabric共识组件分析 --背书策略
在fabric中,共识过程意味着多个节点对于某一批交易的发生顺序.合法性以及它们对账本状态的更新结构达成一致的观点.满足共识则意味着多个节点可以始终保证相同的状态,对于以同样顺序到达的交易可以进行一致 ...
- linux保存的设置用户/组ID(set-user-ID)的测试
直接贴代码和结果 // FileName: id.cpp #include <iostream> #include <unistd.h> using namespace std ...
- HDOJ5883(欧拉路)
The Best Path Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- java代码=====实现修改while()
总结: package com.mmm; public class cse { public static void main(String[] args) { // int count=0;你妹,我 ...
- ElasticSearch所使用的倒排索引的思想和使用场景
背景: 在关系数据库系统里,索引是检索数据最有效率的方式,.但对于搜索引擎,它并不能满足其特殊要求: 1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至 ...
- 一、Jetty介绍
简介: Jetty 是一个用 Java 实现.开源.基于标准的,并且具有丰富功能的 Http 服务器和 Web 容器,可以免费的用于商业行为.Jetty 这个项目成立于 1995 年,现在已经有非常多 ...