问题描述
我正在创建一个 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
}
}