c# - WebClient 下载“听起来相似”的文件
问题描述
我的情况是,我知道服务器上文件名的系统性,但不知道有多少。比如abc_1.jpg、abc_2.jpg等等。我的想法是尝试下载直到文件不存在-> 如果 abc_1 存在,也尝试下载 2 等等。实际发生的是,它不会在文件不存在时立即停止下载,而是继续下载听起来相似的文件,在我的情况下,当被要求输入 2、3 等时,它将继续下载 abc_1.jpg。有什么办法可以避免吗?
这是代码
if (client == null)
{
client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(DownloadFileCompleted);
}
uri = "http://" + serverAdress + downloadTasks[0];
client.DownloadFileAsync(new System.Uri(uri, UriKind.Absolute), Application.persistentDataPath + "/" + newFileName);
downloadTasks.RemoveAt(0);
解决方案
那么,回答我自己的问题。正在寻找问题的错误结局。它不是 WebClient,而是 Apache 服务器:
“如果服务器接收到 /some/dir/foo 的请求并且 /some/dir/foo 不存在,则服务器读取目录以查找所有名为 foo.* 的文件,并有效地伪造一个名称为所有这些文件,为它们分配相同的媒体类型和内容编码,如果客户按名称要求其中之一。然后它选择最符合客户要求的匹配,并返回该文件。
推荐阅读
- java - 在java8中验证属性文件中的键的最佳方法
- python - 为键和项目编写类型提示的正确方法
- javascript - 'this' 关键字即使在绑定时也没有分配适当的范围
- cassandra - 添加数据中心现有集群
- java - 不知道为什么我会收到这个“找不到符号”错误
- outlook - 邮件正文的 Outlook Web App Html 标记:新 OWA 与旧 OWA
- spring - 解决此错误 404:源服务器没有找到目标资源的当前表示或不愿意透露存在的表示
- ruby-on-rails - Rails通过迭代器改变Hash,hash中的值都是一样的
- android - 如何在分离的模块上实现存储库模式?
- r - R - 为什么 str_detect 在以破折号结尾的“单词”上使用单词边界时返回与 grepl 不同的结果