C# 如何将过滤的文件列表传递给 WebDav.Client 并上传该列表中的所有文件?现在我只能放单个文件

问题描述

我正在创建一个 webdav.client c# 应用程序,它将扫描特定文件类型的选定目录。然后获取找到的文件列表并将它们提供给 WebDav 客户端进行上传。目前我只能上传单个文件

public async void button2_Click(object sender,EventArgs e)
    {
        FolderbrowserDialog dialog = new FolderbrowserDialog();
        dialog.RootFolder = Environment.SpecialFolder.Personal;
        if (dialog.ShowDialog() == DialogResult.OK)
        {
            var files = Directory.GetFiles(dialog.Selectedpath).Where(file => Regex.IsMatch(file,@"^.+\.(txt|jpg|png)$"));
            {
                var clientParams = new WebDavClientParams { BaseAddress = new Uri("https://myserver.com"),Credentials = new NetworkCredential("username","password") };
                using (var client = new WebDavClient(clientParams))
                {
                    await client.Mkcol(textBox2.Text+textBox1.Text); // create a directory
                    await client.PutFile("test.text",File.OpenRead("text.text")); // upload a resource
                }
            }

        }
    }

解决方法

只需遍历此文件列表并上传每个文件:

var files = Directory.GetFiles(dialog.SelectedPath).Where(file => Regex.IsMatch(file,@ "^.+\.(txt|jpg|png)$"));
foreach(var file in files) {
  var clientParams = new WebDavClientParams {
    BaseAddress = new Uri("https://myserver.com"),Credentials = new NetworkCredential("username","password")
  };
  using(var client = new WebDavClient(clientParams)) {
    await client.Mkcol(textBox2.Text + textBox1.Text); // create a directory
    await client.PutFile(file,File.OpenRead(file)); // upload a resource
  }
}