博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net 对sftp服务器上文件的操作
阅读量:5139 次
发布时间:2019-06-13

本文共 4685 字,大约阅读时间需要 15 分钟。

由于服务商从FTP服务器迁移到SFTP服务器,唉~~~,苦逼的我们就改来该去的吧。现在来稍微说说这个是怎么实现的。

----------------------------------------我是无耻的分割线------------------------------------------------------------

就不赘述FTP和SFTP的区别了,只提一点在一定的程度上后者更安全,需要的同学请移步http://www.cnblogs.com/mfryf/archive/2013/05/29/3107286.html了解更多,谢谢!

好了,既然要到服务器上去操作文件,我们首先要登陆服务器,就像登陆其他服务器一样,我们需要一个地址、用户名、密码,可能还需要一个端口号。

这里我是借助于一个第三方的插件,SharpSSH 1.1.1.13,这是地址http://www.tamirgal.com/blog/page/SharpSSH.aspx(可以自行下载)。

--需要引用的dll

using Tamir.SharpSsh;

using AmazonASNService.BLL;

class sftpHelp    {        private SshTransferProtocolBase m_sshCp;        private sftpHelp()        {        }        public sftpHelp(SshConnectionInfo connectionInfo)        {            m_sshCp = new Sftp(connectionInfo.Host, connectionInfo.User);            if (connectionInfo.Pass != null)            {                m_sshCp.Password = connectionInfo.Pass;            }            if (connectionInfo.IdentityFile != null)            {                m_sshCp.AddIdentityFile(connectionInfo.IdentityFile);            }        }        public bool Connected        {            get            {                return m_sshCp.Connected;            }        }        public void Connect()        {            if (!m_sshCp.Connected)            {                m_sshCp.Connect();            }        }        public void Close()        {            if (m_sshCp.Connected)            {                m_sshCp.Close();            }        }        //上传        public bool Upload(string localPath, string remotePath,int port)        {            try            {                if (!m_sshCp.Connected)                {                    m_sshCp.Connect(port);//如果没有端口号的话可以忽略                }                m_sshCp.Put(localPath, remotePath);                return true;            }            catch            {                return false;            }        }        //下载        public bool Download(string remotePath, string localPath,int port)        {            try            {                if (!m_sshCp.Connected)                {                    m_sshCp.Connect(port);                }                m_sshCp.Get(remotePath, localPath);                return true;            }            catch            {                return false;            }        } public bool Delete(string remotePath)        {            try            {                if (!m_sshCp.Connected)                {                    m_sshCp.Connect();                }                ((Sftp)m_sshCp).Delete(remotePath);//刚刚新增的Delete方法                return true;            }            catch            {                return false;            }        }        public ArrayList GetFileList(string path,int port)        {            try            {                if (!m_sshCp.Connected)                {                    m_sshCp.Connect(port);                }                return ((Sftp)m_sshCp).GetFileList(path);            }            catch(Exception ex)            {                return null;            }        }    }
///         /// sftp上传文件        ///         private static void UploadSftp()        {            SshConnectionInfo objInfo = new SshConnectionInfo();            objInfo.User = ftpUserID;            objInfo.Host = ftpServerIP;            objInfo.Pass = ftpPassword; //基于密码            sftpHelp objSFTPHelper = new sftpHelp(objInfo);            string[] strFiles = Directory.GetFiles(poapath);            if (strFiles != null)            {               foreach (string strFile in strFiles)                {                    if ( objSFTPHelper.Upload(strFile, ftpDir,2222))//开始上传                    {                        File.Delete(strFile);                    }                }            }                             }
View Code
///         /// 2.从SFTP获取文件到指定目录        ///         private static void DownSFTPFile() {            SshConnectionInfo SsInfo=new SshConnectionInfo();            SsInfo.User = ftpUserID;            SsInfo.Host = ftpServerIP;            //SsInfo.IdentityFile = "key"; //有2中认证,一种基于PrivateKey,一种基于password            SsInfo.Pass = ftpPassword; //基于密码            sftpHelp sftpDown = new sftpHelp(SsInfo);            ArrayList FileList = sftpDown.GetFileList(ftpPath,2222);            if (FileList != null)            {                for (int i = 0; i < FileList.Count; i++)                {                    string sfileName = ftpPath + "/" + FileList[i];                    if (sftpDown.Download(sfileName, downPath,2222))                    {                        sftpDown.Delete(sfileName,2222);                    }                }            }          }
View Code

 

转载于:https://www.cnblogs.com/ypyhy/p/4969375.html

你可能感兴趣的文章
git常用方法
查看>>
康托展开 + 逆展开
查看>>
IP雷达4.0+网络检测
查看>>
2013 Multi-University Training Contest 1 3-idiots
查看>>
自定义dialog
查看>>
[转载] Mac下使用iTerm2让SSH免密码登录远程服务器
查看>>
配置全局的导航栏样式(微信开发)
查看>>
python爬虫Day2:selenium基本使用
查看>>
Tomcat几种出错方法
查看>>
常用的adb命令
查看>>
Mycat 配置文件schema.xml
查看>>
【排序】绝境求生
查看>>
观察者模式(Observer Pattern)
查看>>
[深度学习]开源的深度学习框架
查看>>
算法图解笔记
查看>>
HashMap源码解析
查看>>
DVWA笔记之三:CSRF
查看>>
Dockerfile分享之SSH Server
查看>>
Linq to SQlite的使用
查看>>
HDU 1069 [Monkey and Banana] 动态规划
查看>>