Una solución a la limitación del protocolo HTTP de no poder obtener dos o mas archivos en un solo request; es generar un archivo zip con los archivos deseados y forzar su descargar.
descarga.php
<?php $imgA = 'imagen-1.jpg'; $imgB = 'imagen-2.jpg'; $zipname = 'archivos.zip'; // iniciamos la clase $zip = new ZipArchive; //Creamos el archivo $zip->open('temp/'.$zipname, ZipArchive::CREATE); //agregamos las imágenes, en la raíz del archivo zip, si deseamos agregar una carpeta agregaremos 'carpeta/'. $zip->addFile('temp/'.$imgA, $imgA); $zip->addFile('temp/'.$imgB, $imgB); //cerramos el archivo $zip->close(); /******** si queremos borrar las imagenes utilizamos unlink **********/ unlink('temp/'.$imgA); unlink('temp/'.$imgB); //preparamos la descarga header('Content-Type: application/zip'); header('Content-disposition: attachment; filename='.$zipname); header('Content-Length: ' . filesize('temp/'.$zipname)); readfile('temp/'.$zipname); //Destruye el archivo zip unlink('temp/'.$zipname); ?>
Como siempre el ejemplo es sencillo para su fácil comprensión, podemos mejorarlo con consulta a una base de datos, generación de nuevos nombres, petición de los archivos por $_GET o $_POST, etc, etc.