в таких случаях судя по всему невозможно получить размер файла. Я думаю тут придётся разбираться почему файлы закачиваются не полностью, или написать закачку вручную, примерно как это делает WebClient, но с дополнительными проверками. Например
| Код | HttpWebRequest downloadRequest = WebRequest.Create(@"http://images.champssports.com/is/image/EBFL/30902001_a1_bkmtlslvr_sc7?hei=1500&wid=1500") as HttpWebRequest;
byte[] buffer = new byte[4096]; using (MemoryStream ms = new MemoryStream()) using (HttpWebResponse downloadResponse = downloadRequest.GetResponse() as HttpWebResponse) { Stream respStream = downloadResponse.GetResponseStream(); int read = respStream.Read(buffer, 0, buffer.Length);
while (read > 0) { ms.Write(buffer, 0, read); read = respStream.Read(buffer, 0, buffer.Length); //тут проверяем, не ошибочно ли пришёл "последний" кусок. if (read == 0) { Thread.Sleep(2000); read = respStream.Read(buffer, 0, buffer.Length); } } }
|
Не зная что именно ломается, трудно поставить нужную проверку. Толи файлы битые, толи просто недозакаченные.
|