Я видел этот пример в documentation for PHP readfile
<?php $file = 'monkey.gif'; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?>
Как вы можете это сделать? Загрузите несколько файлов say monkey.gif
и girraffe.jpg
Предпочтительно без ZIP
файлов …
Вы не можете. Это не ограничение PHP, это ограничение HTTP / Web-Browser. HTTP не предоставляет механизм для отправки нескольких файлов по одному запросу.
Тем не менее, у вас может быть некоторый PHP-скрипт, который генерирует несколько фреймов, которые будут запускать каждую загрузку каждый и подделывать ее таким образом.
весь метод кажется немного бессмысленным, поскольку физический файл фактически существует на сервере. просто используйте JavaScript, чтобы открыть все URL-адреса файлов, если вы правильно настроили заголовок в вашем файле .htaccess, тогда файлы будут просто загружаться.
Я бы сделал что-то подобное
<script> var files = ['filename1.jpg', 'filename2.jpg']; for (var i = files.length - 1; i >= 0; i--) { var a = document.createElement("a"); a.target = "_blank"; a.download = "download"; a.href = 'http://www.example.com/path_to/images/' + files[i]; a.click(); }; </script>