不多说,贴代码,看不懂得可以留言。需要引入WinSCP

 public class WebWinScp
{
//远程上传路径
private SessionOptions sessionOptions = null;
private WinSCP.Session session = new WinSCP.Session();
/// <summary>
///
/// </summary>
/// <param name="HostName">FTP服务器</param>
/// <param name="UserName">账号</param>
/// <param name="Password">密码</param>
/// <param name="SshPrivateKeyPath">Ssh私有密钥路径(以PPK结尾的文件)</param>
public WebWinScp(string HostName, string UserName, string Password, string SshPrivateKeyPath)
{
sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = HostName,
UserName = UserName,
Password = Password,
SshPrivateKeyPath = SshPrivateKeyPath,
GiveUpSecurityAndAcceptAnySshHostKey = true
};
}
/// <summary>
/// 下载FTP上的所有文件,并移除FTP上下载的问题
/// </summary>
/// <param name="localPath">本地下载路径</param>
/// <param name="remoteDoPath">远程下载路径</param>
public void Download(string localPath, string remoteDoPath)
{
try
{
//开启连接
session.Open(sessionOptions);
TransferOptions transferOptions = new TransferOptions();
//传输模式 二进制
transferOptions.TransferMode = TransferMode.Binary;
//FTP上的目录列表
RemoteDirectoryInfo directoryInfo = session.ListDirectory(remoteDoPath);
RemoteFileInfoCollection ct = directoryInfo.Files;
TransferOperationResult transferResult;
foreach (RemoteFileInfo item in ct)
{
transferResult = session.GetFiles(remoteDoPath + item.Name, localPath, true, transferOptions);
if (transferResult != null)
{
transferResult.Check();
}
}
}
catch (Exception)
{
throw;
}
finally
{
if (session.Opened)
{
session.Close();
}
}
}
/// <summary>
/// 上传本地文件到FTP上,上传成功删除本机文件
/// </summary>
/// <param name="localPath">本地上传路径</param>
/// <param name="remoteUpPath">远程上传路径</param>
public void Upload(string localPath, string remoteUpPath)
{
try
{
//开启连接
session.Open(sessionOptions);
TransferOptions transferOptions = new TransferOptions();
//传输模式 二进制
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult = null;
transferResult = session.PutFiles(localPath, remoteUpPath, true, transferOptions);
if (transferResult != null)
{
transferResult.Check();
}
}
catch (Exception)
{
throw;
}
finally
{
if (session.Opened)
{
session.Close();
}
}
}
}

WinScp上传和下载的更多相关文章

  1. Winscp远程连接Linux主机,上传和下载文件

    1.安装Winscp.这里不再赘述,网上搜索下载安装就可以 2.点击桌面Winscp快捷键,打开Winscp 3.在打开的页面上填写远程主机的IP,用户名和密码,点击保存,会在页面的左边出现一个站点, ...

  2. Linux - 通过SecureCRT的rz、sz和sftp实现文件的上传和下载

    目录 1 通过rz/sz命令上传/下载 1.1 安装lrzsz软件 1.2 rz - 上传文件 1.3 sz - 下载文件 2 通过sftp上传/下载文件 2.1 关于SFTP的简介 2.2 SFTP ...

  3. Linux—文件上传和下载

    一.通过SecureCRT的rz.sz实现文件的上传和下载 1.检查是否安装sz  rz,命令如下 [root@localhost ~]# rpm -qa | grep rz # 上传 [root@l ...

  4. Xshell在Windows和Linux间文件的上传和下载

    本文通过lrzsz来实现Windows和Linux间文件间的文件传输. lrzsz使用 XMODEM.YMODEM 和 ZMODEM 文件传输协议来实现文件的上传和下载.相比 FTP 或者 WinSC ...

  5. win7下利用ftp实现华为路由器的上传和下载

    win7下利用ftp实现华为路由器的上传和下载 1.  Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...

  6. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  7. java web学习总结(二十四) -------------------Servlet文件上传和下载的实现

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  8. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  9. php实现文件上传与下载(上)

    php实现文件的上传与下载是一个挺基本的功能,一般网站多多少少都会有这样的需求在内,当然不是说所有的文件都可以被上传,那这网络就太没有安全性可言了.因为接触php时间不长,今天写练练手,随笔也就是公开 ...

随机推荐

  1. redis window环境下的安装地址

    https://github-cloud.s3.amazonaws.com/releases/3402186/25358446-c083-11e5-89cb-61582694855e.zip?X-Am ...

  2. POJ 3553 Task schedule

    原题链接:http://poj.org/problem?id=3553 这道题主要就是贪心思想吧,对于每个job,根据其截止时间 dj 从小到大排序,我们必须要尽快把dj最小的job完成掉,这样才能使 ...

  3. CF Gym100548 K Last Defence 解题报告

    先特判掉特殊情况: $a=b,Ans=2$ $ab=0,a+b>0,Ans=2$ $a=b=0,Ans=1$ 考虑剩下的非特殊情况.记$Solve(a,b)$为数列中除了$a,b$外的不同的数的 ...

  4. Java多线程——<一>概述、定义任务

    一.概述 为什么使用线程?从c开始,任何一门高级语言的默认执行顺序是“按照编写的代码的顺序执行”,日常开发过程中写的业务逻辑,但凡不涉及并发的,都是让一个任务顺序执行以确保得到想要的结果.但是,当你的 ...

  5. Asp.net 程序部署问题——在应用程序级别之外使用注册为 allowDefinition='MachineToApplicati错误信息

    [转]在应用程序级别之外使用注册为 allowDefinition='MachineToApplicati 错误信息: ======================================== ...

  6. oracle 字符集导入、导出 、转换

    导入导出及转换 导入导出是我们常用的一个数据迁移及转化工具,因其导出文件具有平台无关性,所以在跨平台迁移中,最为常用. 在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置 ...

  7. Unity3D脚本中文系列教程(十四)

    http://dong2008hong.blog.163.com/blog/static/469688272014032134394/ WWWFrom 类Unity3D脚本中文系列教程(十三)辅助类. ...

  8. 使用shell脚本获取虚拟机中cpu使用率(读/proc/statc)

    #!/bin/bash interval= cpu_num=`-] -c` start_idle=() start_total=() cpu_rate=() cpu_rate_file=./`host ...

  9. 在 tornado 中异步无阻塞的执行耗时任务

    在 tornado 中异步无阻塞的执行耗时任务 在 linux 上 tornado 是基于 epoll 的事件驱动框架,在网络事件上是无阻塞的.但是因为 tornado 自身是单线程的,所以如果我们在 ...

  10. Eclipse Error: Unable to set localhost. This prevents creation of a GUID.

    Symptoms The following error appears in the atlassian-confluence.log: 2011-03-16 18:20:03,021 ERROR ...