Страницы

Поиск по вопросам

пятница, 7 февраля 2020 г.

c# Как продолжить скачивание после обрыва соединения с интернетом

#c_sharp


Скачиваю файл, но после как интернет снова в бою, он не продолжает загрузку 
Как исправить? 

WebClient web = new WebClient();
web.DownloadFileAsync(Uri, Path, DWMVC);


P.S: Нужно чтобы при отключения интернет соединения,останавливалась загрузка файл,
а после возобновления интернета,снова качала оставшие файлы!
    


Ответы

Ответ 1



На основе кода из ответа @AkaInq (добавил using и проверку кода возврата): var request = WebRequest.CreateHttp(uri); var fi = new FileInfo(path); var havePart = fi.Exists; if (havePart) request.AddRange(fi.Length); using (var response = (HttpWebResponse)request.GetResponse()) { var partialDownload = havePart && response.StatusCode == HttpStatusCode.PartialContent; using (var file = File.Open(path, partialDownload ? FileMode.Append : FileMode.Create)) using (var net = response.GetResponseStream()) net.CopyTo(file); } Добавьте try/catch в нужном месте по вкусу.

Ответ 2



вот как-то так, правда это не через webclient: static void DownloadFile(string sSourceURL, string sDestinationPath) { long iFileSize = 0; int iBufferSize = 1024; iBufferSize *= 1000; long iExistLen = 0; System.IO.FileStream saveFileStream; if (System.IO.File.Exists(sDestinationPath)) { System.IO.FileInfo fINfo = new System.IO.FileInfo(sDestinationPath); iExistLen = fINfo.Length; } if (iExistLen > 0) saveFileStream = new System.IO.FileStream(sDestinationPath, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite); else saveFileStream = new System.IO.FileStream(sDestinationPath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite); System.Net.HttpWebRequest hwRq; System.Net.HttpWebResponse hwRes; hwRq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(sSourceURL); hwRq.AddRange((int)iExistLen); System.IO.Stream smRespStream; hwRes = (System.Net.HttpWebResponse)hwRq.GetResponse(); smRespStream = hwRes.GetResponseStream(); iFileSize = hwRes.ContentLength; int iByteSize; byte[] downBuffer = new byte[iBufferSize]; while ((iByteSize = smRespStream.Read(downBuffer, 0, downBuffer.Length)) > 0) { saveFileStream.Write(downBuffer, 0, iByteSize); } }

Комментариев нет:

Отправить комментарий