PHP多文件下载

时间:2010-09-07 22:07:40

标签: php file header download

我在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.gifgirraffe.jpg

最好没有 ZIP 文件......

2 个答案:

答案 0 :(得分:8)

你做不到。它不是PHP限制,它是HTTP / Web浏览器的限制。 HTTP不提供通过一个请求发送多个文件的机制。

然而,您可以使用一些生成多个iframe的PHP脚本,每个iframe会启动一次下载,并以此方式伪造。

答案 1 :(得分:2)

整个方法似乎有点无意义,因为服务器上实际存在物理文件。只需使用JavaScript打开所有文件网址,如果您在.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>