1

I use the fluentftp library to upload a folder to ftp. How i can skip the subfolders of the directory.

              // upload only PDF files
            var rules = new List<FtpRule>{
               new FtpFileExtensionRule(true, new List<string>{ "pdf" }),
               new FtpFolderNameRule(false, FtpFolderNameRule.CommonBlacklistedFolders)
               // only allow PDF files
            };
            ftp.UploadDirectory(ServiceAbrechnungPath, @"/Abrechnungen",
                FtpFolderSyncMode.Mirror, FtpRemoteExists.Skip, FtpVerify.None, rules);
Peter
  • 37
  • 6

1 Answers1

2

You'll need to add a FtpFolderNameRule to exclude the subfolders.

Using your code, it'll look something like this;

using System.Linq

//Get a list of subfolders in the root folder without their path name.
//This should be just the folders in the root folder i.e. you don't need a recursive list of folders within these folders    
var subfolders = Directory.GetDirectories(ServiceAbrechnungPath).Select(subDirectory => subDirectory.Remove(0, ServiceAbrechnungPath.Length)).ToList();

// upload only PDF files in the root of ServiceAbrechnungPath
var rules = new List<FtpRule>{
    new FtpFileExtensionRule(true, new List<string>{ "pdf" }), // only allow PDF files
    new FtpFolderNameRule(false, subfolders)  // exclude subfolders    
};

var uploadResult = ftp.UploadDirectory(ServiceAbrechnungPath, @"/Abrechnungen", FtpFolderSyncMode.Mirror, FtpRemoteExists.Skip,FtpVerify.None, rules);

The uploadResult variable will contain a List<FtpResult> showing which files were successfully uploaded and which folders/files were skipped by the rules.