我的情况是我知道服务器上文件名的系统性,但不知道有多少。比如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.* 的文件,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端按名称请求其中一个文件,它们将具有相同的媒体类型和内容编码。然后,它会选择与客户要求最匹配的文档,并返回该文档。