@IPv4

Как сделать докачку файла средствами WebClient?

Логика работы сего процесса мне, вроде бы, понятна:
Проверяем наличие файла. Если существует (опустим проверки на необходимость докачки), то берем размер файла и при загрузке подставляем в заголовок "Range" и качать будем начиная с той части, на которой закончилась закачка существующего файла.
Проблема в том, что при загрузке даже с нужного байта, файл перезаписывается.
Вижу решение:
Во время старта загрузки проверять наличие файла, как делалось ранее, и если есть, то с нужного байта загружать новый файл туда же, но добавлять расширение .bak. Тем самым, если снова загрузка обрывалась, мы сможем склеить существующий файл с файлом .bak, после чего последний удалить и снова начать докачку в файл .bak.
Но для меня тут появилась проблема - не знаю как склеить файлы правильно и как в последствии отображать в DownloadProgressChangedEventHandler, чтобы при загрузке отображался размер не количество загруженных сейчас байт (даже с нужного фрагмента), а вместе со вторым файлом, с которым они будут склеены. Или если я начну качать с половины, то сразу будет отображаться 50% прогресс загрузки?
В этот раз хотелось бы увидеть примеры кода, которые помогут мне в реализации, если не сложно.
  • Вопрос задан
  • 698 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Средствами HttpWebRequest можно сразу получить длину (размер) скачиваемого файла, это заголовок Content-Length, по ней считать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы