PHP несколько файлов загрузки - PullRequest
3 голосов
/ 08 сентября 2010

Я видел этот пример на 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;
}
?>

Как вы можете сделать так, чтобы оно загружало несколько файлов скажем monkey.gif и girraffe.jpg

Желательно без ZIP файлов ...

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

Вы не можете. Это не ограничение PHP, это ограничение HTTP / веб-браузера. HTTP не предоставляет механизм для отправки нескольких файлов за один запрос.

Однако у вас может быть какой-нибудь PHP-скрипт, который генерирует несколько фреймов, которые инициируют одну загрузку каждый, и таким образом подделывают его.

2 голосов
/ 08 мая 2015

весь метод кажется немного бессмысленным, поскольку физический файл фактически существует на сервере. просто используйте 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>
...