Imports System.Threading Imports FluentFTP Namespace UTSModule Public Class UtsFtp ''' 测试器句柄,全局唯一 Private Shared _object As UtsFtp ''' 初始化测试器线程锁 Private Shared ReadOnly InitLock As New Object() Private Shared FtpPort As Integer Private Shared FtpUser As String Private Shared FtpPwd As String Private _ftpUser As String Private _ftpPwd As String Private _ftpPort As Integer Private _ftpHost As String ''' ''' 初始化FTP连接参数 ''' ''' 端口号 ''' 用户名 ''' 用户密码 Public Shared Sub InitConnectParams(port As Integer, user As String, pwd As String) FtpPort = port FtpUser = user FtpPwd = pwd End Sub ''' ''' 创建类单例对象 ''' ''' Public Shared Function CreateObject() As UtsFtp If _object Is Nothing Then SyncLock InitLock Thread.MemoryBarrier() If _object Is Nothing Then _object = New UtsFtp(UtsRegistry.FtpHost, FtpPort, FtpUser, FtpPwd) End If End SyncLock End If Return _object End Function Private Sub New(host As String, port As Integer, user As String, pwd As String) _ftpHost = host _ftpPort = port _ftpUser = user _ftpPwd = pwd End Sub ''' ''' Ftp服务器地址 ''' ''' Public Property FtpHost As String Get Return _ftpHost End Get Set(value As String) _ftpHost = value End Set End Property Private Sub OnValidateCertificate(control As FtpClient, e As FtpSslValidationEventArgs) e.Accept = True End Sub Public Function FtpFileExists(path As String) As Boolean Dim result As Boolean Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd) AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate ftpClient.EncryptionMode = FtpEncryptionMode.Auto ftpClient.Connect() result = ftpClient.FileExists(path) ftpClient.Disconnect() End Using Return result End Function ''' ''' 创建文件夹 ''' ''' Ftp文件夹路径 ''' 创建所有不存在的文件夹路径 Public Sub CreateDir(remoteDir As String, Optional force As Boolean = False) Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd) AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate ftpClient.EncryptionMode = FtpEncryptionMode.Auto ftpClient.Connect() ftpClient.CreateDirectory(remoteDir, force) ftpClient.Disconnect() End Using End Sub ''' ''' 文件上传 ''' 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 ''' Public Sub FtpUpload(remotePath As String, loadPath As String) Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd) AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate ftpClient.EncryptionMode = FtpEncryptionMode.Auto ftpClient.Connect() ftpClient.UploadFile(loadPath, remotePath, FtpRemoteExists.Overwrite, True) ftpClient.Disconnect() End Using End Sub ''' ''' 文件下载 ''' 从FTP下载压缩包,到本地指定路径 ''' Public Sub FtpDownload(remotePath As String, loadPath As String) Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd) AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate ftpClient.EncryptionMode = FtpEncryptionMode.Auto ftpClient.Connect() ftpClient.DownloadFile(loadPath, remotePath) ftpClient.Disconnect() End Using End Sub End Class End Namespace