SFTP使用的三方类库是Renci.SshNet.DLL

SFTP连接大部分网上使用IP地址形式的路径,而我本次使用的是网站形式的。类似sftp.XXX.com

SFTP的操作也类似File文件的操作,网上大部分都是写一个Helper类,创建对象,调用方法,但是直接操作也是直接了当的,本次操作总结就直接写方法,不写Helper类。

1.连接SFTP

根据网上很多的操作 使用Host即IP地址,Port端口号,账号密码即可成功。

而我本次在实践中,用此方法,一直提示无法找到这样的主机。

最终使用它的另一个重载方法

只提供host,账号密码便可以成功连接。

代码如下:

<add key="sFTPPath" value="sftp.XXX.com" />
<add key="sFTPUserName" value="XXXXXX" />
<add key="sFTPPwd" value="XXXXXXXX" />

App.config

SftpClient client = new SftpClient(ConfigurationManager.AppSettings["sFTPPath"], ConfigurationManager.AppSettings["sFTPUserName"], ConfigurationManager.AppSettings["sFTPPwd"]);//使用Clinet方法中的HOST NAME PASSWORD方法
client.Connect();//连接Client
bool connected = client.IsConnected;//判断是否连接成功

Sftp连接创建

2.连接SFTP中的操作

2.1 SFTP 上传文件,使用UpoladFile方法,对象都是我们一开始创建的Clinet

代码如下:

 <add key="sFTPFolder" value="//XXXXX"/>

APP.config

 FileStream fs = File.OpenRead(本地文件);//把文件写成流
string uploadName = ConfigurationManager.AppSettings["sFTPFolder"] + @"/" + name+ ".jgp";//上传的文件地址使用的是相对路径文件 如//XXX/651.JPG
client.UploadFile(fs, uploadName);//上传文件
fs.Close();//关闭流 停止占用文件进程

UploadFile

2.2 SFTP 下载操作 使用DownloadFile方法

代码如下:

 <add key="sFTPFolder" value="//XXXXXXX"/>

App.config

string localpath = Path + @"\" + name + ".jgp";//localpath是个完整的路径包含文件名
FileStream fs = File.OpenWrite(localpath);
//把文件写成流
client.DownloadFile(ConfigurationManager.AppSettings["sFTPFolder"] + @"/" + name + ".jpg", fs);//SFTP上的文件也是相对路径加文件名
fs.Close();

DownloadFile

2.3 类似还有获取SFTP文件列表名(返回List),还有SFTP内移动文件等等 可以自己查看操作。

   path如 //XXXX/

PS:操作本地文件时地址都是精确到文件名格式 如:‪F:\\XXX\\XXX\XXX.jpg

操作SFTP上的路径都是相对地址   如://XXXX/XXXX.jpg

操作文件都是精确到文件名的地址

FTP 则提供一个上传方法

 public static void FtpSendFile(string filepath, string path, string ftpip, string username, string password)
{ try
{
FileInfo fileInf = new FileInfo(filepath);
string uri = path + fileInf.Name;
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
reqFTP.Credentials = new NetworkCredential(username, password);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = fileInf.Length;
reqFTP.Proxy = new WebProxy();
int buffLength = ;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = fileInf.OpenRead();
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, , buffLength);
while (contentLen != )
{
strm.Write(buff, , contentLen);
contentLen = fs.Read(buff, , buffLength);
}
strm.Close();
fs.Close();
}
catch (Exception ex)
{
//LogHelper.WriteLog(ex.Message.ToString(), ex);
} }

FtpSendFile

filepath具体文件名地址,path:ftp://XX.XX.XX.XX//XXXXX//  (上传到XXXX文件夹下)  ip:XXX.XXX.XX.XXX 后面两个参数是账号密码

关于FTP和SFTP的操作总结的更多相关文章

  1. 我的代码库-Java8实现FTP与SFTP文件上传下载

    有网上的代码,也有自己的理解,代码备份 一般连接windows服务器使用FTP,连接linux服务器使用SFTP.linux都是通过SFTP上传文件,不需要额外安装,非要使用FTP的话,还得安装FTP ...

  2. FTP、SFTP与FTPS

    先简单介绍下FTP的基础知识 FTP的传输有两种方式:ASCII.二进制. FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式). 主动模式 FTP ...

  3. ftp和sftp

    一.ftp ftp是文件传输协议,ftp协议包括两部分,一个是ftp客户端,另一个是ftp服务器. 原理:一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口.FTP ...

  4. 远程登录工具 —— filezilla(FTP vs. SFTP)、xshell、secureCRT

    filezilla:是一个免费开源的 FTP 软件,分为客户端版本和服务器版本,具备所有的 FTP 软件功能. 支持的协议:FTP & SFTP(Secure File Transfer Pr ...

  5. FTP、SFTP、SCP、SSH、OpenSSH关系解密

    FTP(File Transfer Protocol):是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层.FTP ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. java通过ftp和sftp上传war包上传到Linux服务器实现自动重启tomcat的脚本代码

    ar包自动上传Linux并且自动重启tomcat 用的是jdk1.7出的文件监控 支持ftp和sftp,支持多服务器负载等 配置好config 非maven项目导入直接使用 #\u76D1\u542C ...

  8. FTP服务器搭建及操作(一)

    FTP服务器搭建及操作(一) FTP搭建 PHP FTP操作 搭建方法参照(windows):http://www.cnblogs.com/lidan/archive/2012/06/04/25351 ...

  9. FTP、SFTP文件下载内容校验

    描述: 从FTP.SFTP下载的文件做MD5码校验,文件名和MD5码值存放在表格里,表格位置在FTP.SFTP服务器上. os模块只能遍历本地目录/文件,需要先连接FTP.SFTP服务器,将表格下载到 ...

随机推荐

  1. JavaEE-实验二 Java集合框架实验

    该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1.  使用类String类的分割split 将字符串  “Solutions to selected exercises ca ...

  2. Python数据分析中Groupby用法之通过字典或Series进行分组

    在数据分析中有时候需要自己定义分组规则 这里简单介绍一下用一个字典实现分组 people=DataFrame( np.random.randn(5,5), columns=['a','b','c',' ...

  3. iOS 图表工具charts之CombinedChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  4. 阶段3 2.Spring_06.Spring的新注解_1 spring的新注解-Configuration和ComponentScan

    解决测试类重复代码的问题,xml还是存在的问题,没法脱离xml文件 要想在QueryRunner上加注解,是加不了的 创建工程 复制依赖项到pom.xml 复制注解的工程里面的com文件夹 配置文件b ...

  5. 阶段3 2.Spring_01.Spring框架简介_05.spring的优势

  6. Linux上几款好用的字幕编辑器

    如果你经常看国外的大片,你应该会喜欢带字幕版本而不是有国语配音的版本.我在法国长大,童年的记忆里充满了迪斯尼电影.但是这些电影因为有了法语 的配音而听起来很怪.如果现在有机会能看原始的版本,我想,对于 ...

  7. HashMap根据value值排序

    )))); Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); for (Map.Entry s : entr ...

  8. Junit4 简单使用

    一.环境搭建 对于习惯使用Eclipse开发平台来说,Junit早已是非常通常的插件,在Eclipse开发平台中,可以非常方便地搭建Junit测试环境. 1.在Eclipse上创建工程,任何Java工 ...

  9. Spring JdbcTemplate 和 NamedParameterJdbcTemplate 使用

    1.简单介绍 DAO层 的一般使用常见的是MyBatis 和 Hibernate,但是Hibernate是重量级的,而且学习成本较高,Mybatis 需要编写大量配置文件及接口文件,对于简单的项目应用 ...

  10. [转帖]黑客通过 Rootkit 恶意软件感染超 5 万台 MS-SQL 和 PHPMyAdmin 服务器

    黑客通过 Rootkit 恶意软件感染超 5 万台 MS-SQL 和 PHPMyAdmin 服务器 https://www.cnbeta.com/articles/tech/852141.htm 病毒 ...