Comment compresser un dossier et de le télécharger à l'aide de php?
J'ai un dossier nommé "data". Ce dossier "data" contient un fichier "filecontent.txt" et un autre dossier nommé "Fichiers". Le "dossier" Fichiers "contient une info.txt" fichier.
C'est donc un dossier à l'intérieur de la structure de dossier.
Je zip dans ce dossier "données"(à l'aide de php) ainsi que des fichiers et des dossiers à l'intérieur, et télécharger le fichier zippé.
J'ai essayé les exemples disponibles à http://www.php.net/manual/en/zip.examples.php
Ces exemples n'ont pas de travail. Ma version de PHP est 5.2.10
S'il vous plaît aider.
J'ai écrit ce code.
<?php
$zip = new ZipArchive;
if ($zip->open('check/test2.zip',ZIPARCHIVE::CREATE) === TRUE) {
if($zip->addEmptyDir('newDirectory')) {
echo 'Created a new directory';
} else {
echo 'Could not create directory';
}
$zipfilename="test2.zip";
$zipname="check/test2.zip";
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=check/test1.zip'); //header('Content-Length: ' . filesize( $zipfilename));
readfile($zipname); //$zip->close(); } else { echo failed';
}
?>
fichier téléchargé, mais ne pouvait pas décompresser
- Qu'entendez-vous par ne fonctionne pas?
- double possible de Comment compresser un dossier entier à l'aide de PHP
- Je veux dire que quand je lance le script à l'adresse url, aucune erreur ne se produit, mais la compression ou le téléchargement ne se fait pas. Je ne peux pas comprendre ce qui ne va pas..
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de manière récursive ajouter des fichiers dans le répertoire. Quelque chose comme ceci (non testé):
Alors appel
$zip = createZipFromDir('/tmp/dir', 'files.zip');
Pour encore plus de gagner, je vous recommande la lecture sur la SPL
DirectoryIterator
icifpassthru($zip_file)
$file
au lieu defile
.========= La seule solution pour moi ! ! !==========
Met tous les sous-dossiers et sous-fichiers avec leur structure:
J'ai eu à faire la même chose il y a quelques jours et voici ce que j'ai fait.
1) Extraire le Fichier/Dossier de la structure et de remplir un tableau d'éléments. Chaque élément est soit un fichier ou un dossier, si c'est un dossier, de récupérer son contenu comme des éléments de la même façon.
2) Analyse de ce tableau et de générer le fichier zip.
Mettre mon code ci-dessous, vous aurez bien sûr à adapter en fonction de la façon dont votre application a été faite.
Méthodes utilisées pour remplir & analyser:
Voir les copies liées. Un autre est souvent négligé et en particulier paresseux option serait:
zip
ligne de commande de l'outil installé. Il y a également de multiples variantes. Si vous avez une version Mac, elle pourrait avoir besoin de différents paramètres. (Aussi: prenez soin que le fichier de sortie doit être dans un emplacement accessible en écriture, en tout cas.)Utiliser le TbsZip classe pour créer une nouvelle Archive zip. TbsZip est simple, il n'utilise pas de fichiers temporaires, pas de zip, EXE, il n'a pas de dépendance, et a une fonction de Téléchargement qui vide l'archive de téléchargement de fichiers.
Vous avez juste à boucle sous l'arborescence des dossiers et ajouter tous les fichiers dans l'archive, puis rincer.
Exemple de Code:
Fichiers ajoutés à l'archive compressée de façon séquentielle au cours de la méthode Flush (). Si votre archive peut contenir plusieurs sous-fichiers, ce ne sera pas augmenter la mémoire de PHP.