首页 > 解决方案 > 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);

标签: c#webclient

解决方案


那么,回答我自己的问题。正在寻找问题的错误结局。它不是 WebClient,而是 Apache 服务器:

“如果服务器接收到 /some/dir/foo 的请求并且 /some/dir/foo 不存在,则服务器读取目录以查找所有名为 foo.* 的文件,并有效地伪造一个名称为所有这些文件,为它们分配相同的媒体类型和内容编码,如果客户按名称要求其中之一。然后它选择最符合客户要求的匹配,并返回该文件。


推荐阅读