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 后面两个参数是账号密码

最新文章

  1. [LeetCode] Linked List Random Node 链表随机节点
  2. Wakez计算与压缩的思考
  3. Electronic oscillator
  4. docker容器分配静态IP
  5. AC日记——字符串的展开 openjudge 1.7 35
  6. asp.net实现md5加密方法详解
  7. lbs basic mongodb
  8. VB 活动添加item元素
  9. Matlab插值计算各时刻磁法勘探日变观测值
  10. ListView判断滑动底部
  11. 【世外桃源】福音节目 swtychina.com
  12. c语言基础学习09_复合类型
  13. Scyther spdl(比较准确的翻译)
  14. inline temp 内联临时变量
  15. Java第一周作业
  16. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
  17. ubuntu17.04 调试系统工具bcc,systamtap安装
  18. 自动提取文件系统---binwalk(一)
  19. bzoj千题计划287:bzoj1228: [SDOI2009]E&amp;D
  20. 各种格式的压缩包解压,7zip 命令行

热门文章

  1. 三十一:数据库之SQLAlchemy属性常用数据类型和Column常用参数
  2. 2019.03.30 Dialog demo 一个标准使用的dialog程序
  3. FileSystemWatcher监听文件事件
  4. Pycharm最新激活码汇总,pycharm2019激活码
  5. Java的HashMap键值对存储结构解析
  6. 问题记录 | 记录PIL中Image.save的一个坑
  7. CSRF-DVWA_1.9-笔记
  8. 使用graphics.h来绘制图形
  9. deepin下安装Qt5&amp;以及部分问题解决
  10. Spring JdbcTemplate 和 NamedParameterJdbcTemplate 使用