This can be done using AJAX calls. You cannot track the progress of an AJAX call, so you'll have to break the zip into multiple (smaller) files, then call the files in sequence, updating your progress bar as you go.
This process (including a code example) can be found here: https://stackoverflow.com/a/8978468/27897211