public void TestMethod_SendFile() { string file = @"r5.jpg"; string sourcePath = @"D:\FTP\"; bool expected = true; bool actual = false; bool uploadfailed = true; if (!proxyftpClient.FileExists(file) && File.Exists(sourcePath + file)) { proxyftpClient.SendFile(file, sourcePath); } string[] fileList = proxyftpClient.GetDirectoryList(); foreach (string fileInfo in fileList) { if (Path.GetFileName(fileInfo) == file) { log2.Debug("上傳檔案成功: " + fileInfo); actual = true; uploadfailed = false; break; } } if (uploadfailed) { log2.Debug("上傳檔案失敗: " + file); } Assert.AreEqual(expected, actual); }
private void SyncDirectory(IFtpClient client, string remotePath, string localPath, bool isDel) { var localFolder = new DirectoryInfo(localPath); var infos = localFolder.GetFileSystemInfos(); foreach (var info in infos) { if (!client.IsConnected) { client.Connect(); } if (info is FileInfo) { var size = (info as FileInfo).Length; var remoteFile = Path.Combine(remotePath, info.Name); if (!client.FileExists(remoteFile) || client.GetFileSize(remoteFile) != size) { client.UploadFile(info.FullName, remoteFile); Logger.Info($"Uploaded==>{info.FullName}"); } } else if (info is DirectoryInfo) { var remoteFile = Path.Combine(remotePath, info.Name); if (!client.DirectoryExists(remoteFile)) { client.CreateDirectory(remoteFile); Logger.Info($"CreateFtpDirectory==>{remoteFile}"); } SyncDirectory(client, Path.Combine(remotePath, info.Name), info.FullName, isDel); } } if (isDel) { var items = client.GetListing(remotePath); foreach (var item in items) { if (infos.All(info => info.Name != item.Name)) { if (item.Type == FtpFileSystemObjectType.File) { client.DeleteFile(item.FullName); } else if (item.Type == FtpFileSystemObjectType.Directory) { client.DeleteDirectory(item.FullName); } Logger.Info($"DeletedFtp==>{item.FullName}"); } } } }
public bool Exist(string Path, string Filename) { try { if (_ftpClient.FileExists(Path + Filename)) { return(true); } else { return(false); } } catch (Exception ex) { _log.Error($"{FtpTemplateMessage("Exit", Filename, "throw exception")}", ex); return(false); } }
private Task UploadFile(IFtpClient client, ILocalFile file, string remoteDirectoryPath, bool overwrite) { return(file.OpenStreamForReadAsync().ContinueWith(fileStreamTask => { if (client.FileExists(remoteDirectoryPath + "/" + file.Name) && !overwrite) { var localDirectoryItem = DependencyService.Resolve <IUploadLocalItem>(); localDirectoryItem.Item = file; localDirectoryItem.DestinationPath = remoteDirectoryPath; FileConflicts.Add(localDirectoryItem); return; } using (var fileStream = fileStreamTask.Result) { client.Upload(fileStream, remoteDirectoryPath + "/" + file.Name, overwrite); } })); }