diff --git a/UploadersLib/FileUploaders/FTP.cs b/UploadersLib/FileUploaders/FTP.cs index 1d989fd2e..8490030aa 100644 --- a/UploadersLib/FileUploaders/FTP.cs +++ b/UploadersLib/FileUploaders/FTP.cs @@ -103,17 +103,20 @@ public FTP(FTPAccount account) } } + #region FileUploader methods + public override UploadResult Upload(Stream stream, string fileName) { UploadResult result = new UploadResult(); fileName = Helpers.GetValidURL(fileName); string path = Account.GetSubFolderPath(fileName); + bool uploadResult; try { IsUploading = true; - UploadData(stream, path); + uploadResult = UploadData(stream, path); } finally { @@ -121,7 +124,7 @@ public override UploadResult Upload(Stream stream, string fileName) IsUploading = false; } - if (!StopUploadRequested && !IsError) + if (uploadResult && !StopUploadRequested && !IsError) { result.URL = Account.GetUriPath(fileName); } @@ -138,6 +141,8 @@ public override void StopUpload() } } + #endregion FileUploader methods + public bool Connect() { if (!client.IsConnected) diff --git a/UploadersLib/FileUploaders/SFTP.cs b/UploadersLib/FileUploaders/SFTP.cs index 9471f01eb..95f0ceffc 100644 --- a/UploadersLib/FileUploaders/SFTP.cs +++ b/UploadersLib/FileUploaders/SFTP.cs @@ -61,31 +61,30 @@ public SFTP(FTPAccount account) Account = account; } + #region FileUploader methods + public override UploadResult Upload(Stream stream, string fileName) { UploadResult result = new UploadResult(); - if (Connect()) + fileName = Helpers.GetValidURL(fileName); + string path = Account.GetSubFolderPath(fileName); + bool uploadResult; + + try { - fileName = Helpers.GetValidURL(fileName); - string folderPath = Account.GetSubFolderPath(); - string filePath = URLHelpers.CombineURL(folderPath, fileName); + IsUploading = true; + uploadResult = UploadStream(stream, path); + } + finally + { + Dispose(); + IsUploading = false; + } - try - { - IsUploading = true; - UploadStream(stream, filePath); - } - finally - { - Dispose(); - IsUploading = false; - } - - if (!StopUploadRequested && !IsError) - { - result.URL = Account.GetUriPath(fileName); - } + if (uploadResult && !StopUploadRequested && !IsError) + { + result.URL = Account.GetUriPath(fileName); } return result; @@ -100,6 +99,8 @@ public override void StopUpload() } } + #endregion FileUploader methods + public bool Connect() { if (client == null) @@ -209,24 +210,29 @@ public List CreateMultiDirectory(string path) return directoryList; } - private void UploadStream(Stream stream, string remotePath) + private bool UploadStream(Stream stream, string remotePath) { - try + if (Connect()) { - using (SftpFileStream sftpStream = client.OpenWrite(remotePath)) + try { - TransferData(stream, sftpStream); + using (SftpFileStream sftpStream = client.OpenWrite(remotePath)) + { + return TransferData(stream, sftpStream); + } } - } - catch (SftpPathNotFoundException) - { - CreateDirectory(URLHelpers.GetDirectoryPath(remotePath)); + catch (SftpPathNotFoundException) + { + CreateDirectory(URLHelpers.GetDirectoryPath(remotePath)); - using (SftpFileStream sftpStream = client.OpenWrite(remotePath)) - { - TransferData(stream, sftpStream); + using (SftpFileStream sftpStream = client.OpenWrite(remotePath)) + { + return TransferData(stream, sftpStream); + } } } + + return false; } public void Dispose() diff --git a/UploadersLib/Forms/UploadersConfigFormHelper.cs b/UploadersLib/Forms/UploadersConfigFormHelper.cs index 096cfcd61..9016f58ab 100644 --- a/UploadersLib/Forms/UploadersConfigFormHelper.cs +++ b/UploadersLib/Forms/UploadersConfigFormHelper.cs @@ -1002,7 +1002,7 @@ private void FTPOpenClient() { FTPAccount account = GetSelectedFTPAccount(); - if (account != null) + if (account != null && (account.Protocol == FTPProtocol.FTP || account.Protocol == FTPProtocol.FTPS)) { new FTPClientForm(account).Show(); }