2010-09-07 73 views
3

我見過的documentation for PHP readfilePHP多文件下載

<?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文件...

+0

一個HTTP請求,一個文件... – 2010-09-07 22:11:08

+1

見過這樣一個下載地方? – 2010-09-07 22:12:03

+0

相關/可能重複:[在一個HTTP請求中下載多個文件](http://stackoverflow.com/questions/2332329/download-multiple-files-in-one-http-request) – hakre 2012-02-08 01:10:46

回答

7

你不能。這不是PHP的限制,它是HTTP/Web瀏覽器的限制。 HTTP不提供通過一個請求發送多個文件的機制。

但是,您可以使用一些PHP腳本生成多個iframe,每個iframe都會啓動一次下載,並以此方式僞裝。

+0

iframe的一個建議很酷.. ..... – effkay 2011-04-30 18:35:37

2

整個方法似乎有點沒有意義,因爲實際上存在於服務器上的物理文件。只需使用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>