2016-05-01 5 views
1

Я сделал этот маленький инструмент, который просматривает список ссылок на изображения и загружает их на жесткий диск, однако некоторые из фотографий являются неполными (Check this picture), и они даже не создают исключение , В приведенном ниже коде показан способ загрузки, который я использую в своем инструменте.Неполные/поврежденные загруженные файлы

private void Download(string url) 
{ 
    try 
    { 
     HttpWebRequest Request = WebRequest.Create(url) as HttpWebRequest; 
     Request.Method = WebRequestMethods.Http.Get; 
     Request.Timeout = 60 * 1000; 
     FileInfo ImageFile = new FileInfo(Path.Combine(BaseDirectory, Path.GetFileName(url))); 
     if (!ImageFile.Exists) 
     { 
      using (HttpWebResponse Response = Request.GetResponse() as HttpWebResponse) 
      { 
       if (Response.StatusCode.Equals(HttpStatusCode.OK)) 
       { 
        using (FileStream FStream = new FileStream(ImageFile.FullName, FileMode.Create, FileAccess.Write, FileShare.None, 4096)) 
         Response.GetResponseStream().CopyTo(FStream, 4096); 
       } 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine("Error Downloading: {0}\r\nMessage: {1}", url, e.Message); 
    } 
} 

Я не могу понять, является ли проблема на стороне сервера или есть что-то случилось с моим кодом, так что вы думаете?

ответ

1

Вы пробовали позвонить Flush() после того, как прочитали данные? Похоже, что последняя часть потока не выписывается.

+0

Не используется ли этот оператор для меня или он просто закрывает FileStream? Кроме того, это происходит только иногда, в других случаях нет проблем с любыми загруженными изображениями, и вот что меня смутило! – PavilionVI

+0

Использование только вызовов Dispose(), которое аккуратно уничтожает объект. Нет никакой гарантии, что поток будет очищен до того, как он будет уничтожен. Время, когда оно действительно срабатывало, вероятно, связано с тем, что поток сбрасывается каким-то другим фактором. Попробуйте вызвать Flush() и посмотреть, как вы набираете –

+0

Хорошо. Я попробую и отправлю отчет позже. – PavilionVI

Смежные вопросы