К сожалению, JavaScript не может определить, когда файл завершил загрузку. Лучший совет, который я могу предложить, - это использовать внутренний сервер для архивирования выбранных файлов по запросу, а затем отправлять папку ZIP пользователю.
Что касается внешнего интерфейса, вы можете использовать jQuery для отправки запроса на сервер в режиме реального времени.
Что касается серверной логики, я бы попробовал PHP расширение Zip , которое должно быть установлено на сервере. Сервер архивирует файлы, запрошенные у jQuery, сохраняет ZIP-архив во временном местоположении и перенаправляет пользователя на этот URL-адрес для загрузки.
Надеюсь, это поможет.