Обычное скачивание отследить нельзя. Скачивается файл отдельно от страницы.
Можно, но не желательно: скачивать файл через ajax в память, а потом отдавать повторно как blob. Это будет жрать память пропорционально размеру загружаемого файла и всё равно будет не отслеживаемая задержка пока файл из памяти пишется на диск.
Можно, но чисто теоретически: отслеживать чтение файла на сервере и каким-либо способом(напр. websocket) передавать данные о прогрессе на клиент. Реализацию такого извращения скорее всего придётся пилить самому и она нетривиальна.