How to download multiple files with one HTTP request?
Zipping is the only option that will have consistent result on all browsers. If it's not an option because you don't know zips can be generated dynamically, well, they can. If it's not an option because you have a grudge against zip files, well..
MIME/multipart is for email messages and/or POST transmission to the HTTP server. It was never intended to be received and parsed on the client side of a HTTP transaction. Some browsers do implement it, some others don't.
As another alternative, you could have a JavaScript script opening windows downloading the individual files. Or a Java Applet (requires Java Runtimes on the machines, if it's an enterprise application, that shouldn't be a problem [as the NetAdmin can deploy it on the workstations]) that would download the files in a directory of the user's choice.
Download multiple files with a single action
HTTP does not support more than one file download at once.
There are two solutions:
- Open x amount of windows to initiate the file downloads (this would be done with JavaScript)
- preferred solution create a script to zip the files
Download Multiple files in one HTTP request
It is possible to send a multipart response in HTTP:
In general, HTTP treats a multipart message-body no differently than any other media type: strictly as payload. […] an HTTP user agent SHOULD follow the same or similar behavior as a MIME user agent would upon receipt of a multipart type.
[…] If an application receives an unrecognized multipart subtype, the application MUST treat it as being equivalent to "multipart/mixed".
But since Firefox is the only browser that I know about to support such multipart responses (apart from multipart/byterange), you should use some archive file format for this purpose.
How can I let a user download multiple files when a button is clicked?
The best way to do this is to have your files zipped and link to that:
The other solution can be found here: How to make a link open multiple pages when clicked
Which states the following:
HTML:
<a href="#" class="yourlink">Download</a>
JS:
$('a.yourlink').click(function(e) {
e.preventDefault();
window.open('mysite.com/file1');
window.open('mysite.com/file2');
window.open('mysite.com/file3');
});
Having said this, I would still go with zipping the file, as this implementation requires JavaScript and can also sometimes be blocked as popups.
Related Topics
Is There a Difference Between Instantiation with Parentheses or Without
Get/Set Dpi with PHP Gd/Imagick
How to Put a Translation System in PHP Website
Why Does (0 == 'Hello') Return True in PHP
PHP Upload Size and Its Impact on Post Size and Memory Limit
PHP Xml Inserting Element After (Or Before) Another Element
How to Get Results from the Wikipedia API with PHP
Convert a Big Integer to a Full String in PHP
Regex for Dropping Http:// and Www. from Urls
Convert PHP Array to JSON Tree
Using PHP Include to Separate Site Content
Why Doesn't PHP Dom Include Slash on Self Closing Tags
PHP Date - Get Name of the Months in Local Language
Why Composer Can Not Find My Brand New Package on Packagist.Org