2010-09-07 11 views
3

J'ai vu cet exemple sur le documentation for PHP readfilePHP multiples fichier télécharger

<?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; 
} 
?> 

Comment pouvez-vous faire en sorte Il télécharger plusieurs fichiers disent monkey.gif et girraffe.jpg

De préférence sansZIPfichiers ...

+0

une requête HTTP, un fichier ... –

+1

Vous avez déjà vu un tel téléchargement partout? –

+0

Dupliqué/Possible: [Télécharger plusieurs fichiers dans une requête HTTP] (http://stackoverflow.com/questions/2332329/download-multiple-files-in-one-http-request) – hakre

Répondre

7

Vous ne pouvez pas. Ce n'est pas une limitation PHP, c'est une limitation HTTP/Web-Browser. HTTP ne fournit pas un mécanisme pour envoyer plusieurs fichiers sur une requête.

Vous pourriez, cependant, avoir un script PHP qui génère plusieurs iframes, ce qui déclencherait un téléchargement chacun, et le falsifier de cette façon.

+0

iframe une recommandation est cool .. ..... – effkay

2

l'ensemble de la méthode semble un peu inutile car un fichier physique existe réellement sur le serveur. Il suffit d'utiliser JavaScript pour ouvrir toutes les urls du fichier, si vous avez correctement défini l'en-tête dans votre fichier .htaccess, les fichiers seront simplement téléchargés.

je ferais quelque chose comme ça

<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>