【问题标题】:I wanted to download files whose name start with a particular string from a folder in an HTTPS link using c#我想使用 c# 从 HTTPS 链接中的文件夹中下载名称以特定字符串开头的文件
【发布时间】:2016-05-08 21:43:00
【问题描述】:

我想使用 c#HTTPS 链接中的文件夹中下载名称以 特定字符串 开头的文件, 对于此示例,我的文件以 test 开头,但我不知道 XXXX 字符

WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential("login", "pass");
webClient.DownloadFile("https://domain.com/testXXXX.zip", "d://file.zip");

我已经使用我已经知道名称的文件测试了代码,并且它运行良好

有什么帮助吗?

【问题讨论】:

  • 您需要一些从服务器获取文件列表的方法...简单明了。如果服务器不支持给你这样的文件列表,那么你就不走运了(除非你想做丑陋的暴力破解)。如果它将该列表作为网页提供,您将不得不编写代码来读取该页面并将其解析为文件名列表。
  • 我已经在没有凭据的情况下测试了代码,并且它的工作正常,有什么建议在开始下载之前获取文件夹吗?
  • 如我所说。这取决于服务器如何/是否可以为您提供文件列表。

标签: c# https ssis webclient


【解决方案1】:

请使用它来获取所有符合您的条件的文件,然后将其附加到您的网址

var fileEntries = Directory.GetFiles("").Where(x=>x.StartsWith("test"));
           foreach (var fi in fileEntries )
            {
                WebClient client = newWebClient();
                client .Credentials = new NetworkCredential("login", "pass");
                yourUrl=  yourUrl +fileName
                client.DownloadFileAsync(yourUrl, destinationhere);
            }

【讨论】:

  • 它不适用于 HTTPS 链接,因为我需要凭据才能从目录中获取文件
  • 然后像您在您的代码中所做的那样设置凭据。我知道您将包含该部分
  • 我已经编辑了我的答案以包含凭证。如果你还有问题,请告诉我
  • 问题出在这里: var fileEntries = Directory.GetFiles("").Where(x=>x.StartsWith("test"));没有凭据我无法访问该目录,因此函数 GetFiles 将一无所获
  • 我认为 Directory.GetFiles() 在远程网站上不起作用无论如何。它适用于本地文件系统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2016-08-22
相关资源
最近更新 更多