Как сделать прогресс бар скачивания одного файла?
нужно создать потоковый контекст и использовать stream-notification-callback (см. пример).

Функция будет вызываться в процессе загрузки / выгрузки файла, сообщая о количестве переданных байтов. Это то, что нужно для отрисовки прогресс-бара.
сделайте через js, например, dropzone js