I use several invisible frames to run multiple downloads at once. There will be more than one HTTP request, but the effect will be what you described.
<iframe style="display: none;" src="file1.zip"></iframe> <iframe style="display: none;" src="file2.zip"></iframe> <iframe style="display: none;" src="file3.zip"></iframe>
Most browsers will ask the user if they want to allow multiple downloads (this will prevent the website from sending the file to the file system). In addition, you must ensure that the file is actually loaded, and not just displayed inside an invisible iframe (for example, using header('Content-disposition: attachment'); inside the PHP script serving the file).
In my solution, I use JavaScript to change src after downloading each file, so the files are downloaded sequentially, and my server needs to process fewer requests at the same time. But this solution requires AJAX and is much more complicated.
source share