Задача на любом языке реализуется с помощью временного файла.
Вначале проверям размер скачиваемого файла, потом проверяем буфер сколько уже скачалось, после чего скачиваем с места обрыва.
До всего этого нужно проверять размер скачиваемого файла и размер буфера, если не совпадают, кидать на докачку.