Я использую несколько невидимых фреймов для одновременной загрузки нескольких файлов. Будет более одного HTTP-запроса, но эффект будет таким, как вы описали.
<iframe style="display: none;" src="file1.zip"></iframe>
<iframe style="display: none;" src="file2.zip"></iframe>
<iframe style="display: none;" src="file3.zip"></iframe>
Большинство браузеров спрашивают пользователя, хотят ли они разрешить многократную загрузку (это позволяет запретить спаму веб-сайта файловую систему). Кроме того, вы должны убедиться, что файл действительно будет загружен, а не просто отображен внутри невидимого iframe (например, с помощью header('Content-disposition: attachment');
внутри сценария PHP, обслуживающего файл).
В моем решении я использую JavaScript для изменения src после загрузки каждого файла, поэтому файлы загружаются последовательно, и мой сервер должен обрабатывать меньше запросов одновременно. Но это решение требует AJAX и намного сложнее.