PhpZip
est une bibliothèque PHP pour un travail étendu avec les archives ZIP.
Documentation russe
Version | PHP | Documentation |
---|---|---|
^4.0 (maître) | ^7,4|^8,0 | actuel |
^3.0 | ^5,5|^7,0 | Documents v3.3 |
PhpZipZipFile
php-zip
et la classe ZipArchive
).php-bz2
.ZIP64
(la taille du fichier est supérieure à 4 Go ou le nombre d'entrées dans l'archive est supérieur à 65 535).Attention!
Pour les systèmes 32 bits, la méthode de chiffrement
Traditional PKWARE Encryption (ZipCrypto)
n'est actuellement pas prise en charge. Utilisez la méthode de cryptageWinZIP AES Encryption
, dans la mesure du possible.
Traditional PKWARE Encryption (ZipCrypto)
et WinZIP AES Encryption
.PHP
>= 7.4 ou PHP
>= 8.0 (de préférence 64 bits).bzip2
facultative pour la compression BZIP2.openssl
pour la prise en charge WinZip Aes Encryption
. composer require nelexa/zip
Dernière version stable :
// create new archive
$ zipFile = new PhpZip ZipFile ();
try {
$ zipFile
-> addFromString ( ' zip/entry/filename ' , ' Is file content ' ) // add an entry from the string
-> addFile ( ' /path/to/file ' , ' data/tofile ' ) // add an entry from the file
-> addDir ( __DIR__ , ' to/path/ ' ) // add files from the directory
-> saveAsFile ( $ outputFilename ) // save the archive to a file
-> close (); // close archive
// open archive, extract, add files, set password and output to browser.
$ zipFile
-> openFile ( $ outputFilename ) // open archive from file
-> extractTo ( $ outputDirExtract ) // extract files to the specified directory
-> deleteFromRegex ( ' ~^.~ ' ) // delete all hidden (Unix) files
-> addFromString ( ' dir/file.txt ' , ' Test file ' ) // add a new entry from the string
-> setPassword ( ' password ' ) // set password for all entries
-> outputAsAttachment ( ' library.jar ' ); // output to the browser without saving to a file
}
catch ( PhpZip Exception ZipException $ e ){
// handle exception
}
finally {
$ zipFile -> close ();
}
D'autres exemples peuvent être trouvés dans le dossier tests/
Zip Entry - fichier ou dossier dans une archive ZIP. Chaque entrée de l'archive a certaines propriétés, par exemple : nom de fichier, méthode de compression, méthode de cryptage, taille du fichier avant compression, taille du fichier après compression, CRC32 et autres.
PhpZipZipFile
SplFileInfo
à une archive ZIP.SymfonyComponentFinderFinder
à une archive ZIP.Initialise l'archive ZIP
$ zipFile = new PhpZip ZipFile ();
Ouvre une archive zip à partir d'un fichier.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFile ( ' file.zip ' );
Ouvre une archive zip à partir d'une chaîne.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFromString ( $ stringContents );
Ouvre une archive zip à partir du flux.
$ stream = fopen ( ' file.zip ' , ' rb ' );
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFromStream ( $ stream );
Renvoie le nombre d'entrées dans l'archive.
$ zipFile = new PhpZip ZipFile ();
$ count = count ( $ zipFile );
// or
$ count = $ zipFile -> count ();
Renvoie la liste des fichiers d'archive.
$ zipFile = new PhpZip ZipFile ();
$ listFiles = $ zipFile -> getListFiles ();
// example array contents:
// array (
// 0 => 'info.txt',
// 1 => 'path/to/file.jpg',
// 2 => 'another path/',
// 3 => '0',
// )
Renvoie le contenu de l'entrée en utilisant son nom.
// $entryName = 'path/to/example-entry-name.txt';
$ zipFile = new PhpZip ZipFile ();
$ contents = $ zipFile [ $ entryName ];
// or
$ contents = $ zipFile -> getEntryContents ( $ entryName );
Vérifie s'il y a une entrée dans l'archive.
// $entryName = 'path/to/example-entry-name.txt';
$ zipFile = new PhpZip ZipFile ();
$ hasEntry = isset ( $ zipFile [ $ entryName ]);
// or
$ hasEntry = $ zipFile -> hasEntry ( $ entryName );
Vérifie que l'entrée dans l'archive est un répertoire.
// $entryName = 'path/to/';
$ zipFile = new PhpZip ZipFile ();
$ isDirectory = $ zipFile -> isDirectory ( $ entryName );
Extrayez le contenu de l'archive. Le répertoire doit exister.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> extractTo ( $ directory );
Extrayez certains fichiers dans le répertoire. Le répertoire doit exister.
// $toDirectory = '/tmp';
$ extractOnlyFiles = [
' filename1 ' ,
' filename2 ' ,
' dir/dir/dir/ '
];
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> extractTo ( $ toDirectory , $ extractOnlyFiles );
ZipFile
est un itérateur. Peut parcourir toutes les entrées de la boucle foreach
.
foreach ( $ zipFile as $ entryName => $ contents ){
echo " Filename: $ entryName " . PHP_EOL ;
echo " Contents: $ contents " . PHP_EOL ;
echo ' ----------------------------- ' . PHP_EOL ;
}
Peut parcourir le Iterator
.
$ iterator = new ArrayIterator ( $ zipFile );
while ( $ iterator -> valid ())
{
$ entryName = $ iterator -> key ();
$ contents = $ iterator -> current ();
echo " Filename: $ entryName " . PHP_EOL ;
echo " Contents: $ contents " . PHP_EOL ;
echo ' ----------------------------- ' . PHP_EOL ;
$ iterator -> next ();
}
Renvoie le commentaire de l'archive Zip.
$ zipFile = new PhpZip ZipFile ();
$ commentArchive = $ zipFile -> getArchiveComment ();
Renvoie le commentaire d'une entrée en utilisant le nom de l'entrée.
$ zipFile = new PhpZip ZipFile ();
$ commentEntry = $ zipFile -> getEntryComment ( $ entryName );
Toutes les méthodes d'ajout d'entrées à une archive ZIP vous permettent de spécifier une méthode de compression du contenu.
Les méthodes de compression suivantes sont disponibles :
PhpZipConstantsZipCompressionMethod::STORED
- pas de compressionPhpZipConstantsZipCompressionMethod::DEFLATED
- Dégonfler la compressionPhpZipConstantsZipCompressionMethod::BZIP2
- Compression Bzip2 avec l'extension ext-bz2
Ajoute un fichier à une archive ZIP à partir du chemin indiqué.
$ zipFile = new PhpZip ZipFile ();
// $file = '...../file.ext';
// $entryName = 'file2.ext'
$ zipFile -> addFile ( $ file );
// you can specify the name of the entry in the archive (if null, then the last component from the file name is used)
$ zipFile -> addFile ( $ file , $ entryName );
// you can specify a compression method
$ zipFile -> addFile ( $ file , $ entryName , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFile ( $ file , $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFile ( $ file , $ entryName , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute un SplFileInfo
à une archive ZIP.
// $file = '...../file.ext';
// $entryName = 'file2.ext'
$ zipFile = new PhpZip ZipFile ();
$ splFile = new SplFileInfo ( ' README.md ' );
$ zipFile -> addSplFile ( $ splFile );
$ zipFile -> addSplFile ( $ splFile , $ entryName );
// or
$ zipFile [ $ entryName ] = new SplFileInfo ( $ file );
// set compression method
$ zipFile -> addSplFile ( $ splFile , $ entryName , $ options = [
PhpZip Constants ZipOptions:: COMPRESSION_METHOD => PhpZip Constants ZipCompressionMethod:: DEFLATED ,
]);
Ajoute des fichiers de SymfonyComponentFinderFinder
à une archive ZIP.
$ finder = new Symfony Component Finder Finder ();
$ finder
-> files ()
-> name ( ' *.{jpg,jpeg,gif,png} ' )
-> name ( ' /^[0-9a-f]./ ' )
-> contains ( ' /lorems+ipsum$/i ' )
-> in ( ' path ' );
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFromFinder ( $ finder , $ options = [
PhpZip Constants ZipOptions:: COMPRESSION_METHOD => PhpZip Constants ZipCompressionMethod:: DEFLATED ,
PhpZip Constants ZipOptions:: MODIFIED_TIME => new DateTimeImmutable ( ' -1 day 5 min ' )
]);
Ajoute un fichier à une archive ZIP en utilisant son contenu.
$ zipFile = new PhpZip ZipFile ();
$ zipFile [ $ entryName ] = $ contents ;
// or
$ zipFile -> addFromString ( $ entryName , $ contents );
// you can specify a compression method
$ zipFile -> addFromString ( $ entryName , $ contents , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFromString ( $ entryName , $ contents , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFromString ( $ entryName , $ contents , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute une entrée du flux à l'archive ZIP.
$ zipFile = new PhpZip ZipFile ();
// $stream = fopen(..., 'rb');
$ zipFile -> addFromStream ( $ stream , $ entryName );
// or
$ zipFile [ $ entryName ] = $ stream ;
// you can specify a compression method
$ zipFile -> addFromStream ( $ stream , $ entryName , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFromStream ( $ stream , $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFromStream ( $ stream , $ entryName , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoutez un nouveau répertoire.
$ zipFile = new PhpZip ZipFile ();
// $path = "path/to/";
$ zipFile -> addEmptyDir ( $ path );
// or
$ zipFile [ $ path ] = null ;
Ajoute toutes les entrées d'un tableau.
$ entries = [
' file.txt ' => ' file contents ' , // add an entry from the string contents
' empty dir/ ' => null , // add empty directory
' path/to/file.jpg ' => fopen ( ' ..../filename ' , ' rb ' ), // add an entry from the stream
' path/to/file.dat ' => new SplFileInfo ( ' ..../filename ' ), // add an entry from the file
];
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addAll ( $ entries );
Ajoute des fichiers à l'archive à partir du répertoire sur le chemin spécifié sans sous-répertoires.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addDir ( $ dirName );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addDir ( $ dirName , $ localPath );
// you can specify a compression method
$ zipFile -> addDir ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addDir ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addDir ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute des fichiers à l'archive à partir du répertoire sur le chemin spécifié avec des sous-répertoires.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addDirRecursive ( $ dirName );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addDirRecursive ( $ dirName , $ localPath );
// you can specify a compression method
$ zipFile -> addDirRecursive ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addDirRecursive ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addDirRecursive ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute des fichiers à partir de l'itérateur de répertoires.
// $directoryIterator = new DirectoryIterator($dir); // without subdirectories
// $directoryIterator = new RecursiveDirectoryIterator($dir); // with subdirectories
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromIterator ( $ directoryIterator );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath );
// or
$ zipFile [ $ localPath ] = $ directoryIterator ;
// you can specify a compression method
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Exemple avec certains fichiers ignorant :
$ ignoreFiles = [
' file_ignore.txt ' ,
' dir_ignore/sub dir ignore/ '
];
// $directoryIterator = new DirectoryIterator($dir); // without subdirectories
// $directoryIterator = new RecursiveDirectoryIterator($dir); // with subdirectories
// use PhpZipUtilIteratorIgnoreFilesFilterIterator for non-recursive search
$ zipFile = new PhpZip ZipFile ();
$ ignoreIterator = new PhpZip Util Iterator IgnoreFilesRecursiveFilterIterator (
$ directoryIterator ,
$ ignoreFiles
);
$ zipFile -> addFilesFromIterator ( $ ignoreIterator );
Ajoute des fichiers à partir d'un répertoire par modèle global sans sous-répertoires.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute des fichiers à partir d'un répertoire par modèle global avec des sous-répertoires.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute des fichiers à partir d'un répertoire par modèle PCRE sans sous-répertoires.
$ regexPattern = ' /.(jpe?g|png|gif)$/si ' ; // example regex pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Ajoute des fichiers à partir d'un répertoire par modèle PCRE avec des sous-répertoires.
$ regexPattern = ' /.(jpe?g|png|gif)$/si ' ; // example regex pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Supprime une entrée de l'archive en utilisant son nom.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromName ( $ entryName );
Supprime une entrée dans l'archive à l'aide du modèle global.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> delete all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromGlob ( $ globPattern );
Supprime une entrée dans l'archive à l'aide du modèle PCRE.
$ regexPattern = ' /.(jpe?g|png|gif)$/si ' ; // example regex pattern -> delete all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromRegex ( $ regexPattern );
Supprime toutes les entrées de l'archive ZIP.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteAll ();
Renomme une entrée définie par son nom.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> rename ( $ oldName , $ newName );
Définissez le niveau de compression pour tous les fichiers de l'archive.
Notez que cette méthode ne s'applique pas aux entrées ajoutées après l'exécution de cette méthode.
Par défaut, le niveau de compression est 5 ( PhpZipConstantsZipCompressionLevel::NORMAL
) ou le niveau de compression spécifié dans l'archive pour la compression Deflate.
Les valeurs vont de 1 ( PhpZipConstantsZipCompressionLevel::SUPER_FAST
) à 9 ( PhpZipConstantsZipCompressionLevel::MAXIMUM
) sont prises en charge. Plus le nombre est élevé, meilleure est la compression et plus longue.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionLevel ( PhpZip Constants ZipCompressionLevel:: MAXIMUM );
Définit le niveau de compression de l'entrée par son nom.
Les valeurs vont de 1 ( PhpZipConstantsZipCompressionLevel::SUPER_FAST
) à 9 ( PhpZipConstantsZipCompressionLevel::MAXIMUM
) sont prises en charge. Plus le nombre est élevé, meilleure est la compression et plus longue.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionLevelEntry ( $ entryName , PhpZip Constants ZipCompressionLevel:: FAST );
Définit la méthode de compression pour l'entrée par son nom.
Les méthodes de compression suivantes sont disponibles :
PhpZipConstantsZipCompressionMethod::STORED
- Pas de compressionPhpZipConstantsZipCompressionMethod::DEFLATED
- Dégonfler la compressionPhpZipConstantsZipCompressionMethod::BZIP2
- Compression Bzip2 avec l'extension ext-bz2
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionMethodEntry ( $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED );
Définir le commentaire d'une archive ZIP.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setArchiveComment ( $ commentArchive );
Définit le commentaire d'une entrée définie par son nom.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setEntryComment ( $ entryName , $ comment );
Sélection d'entrées dans l'archive pour effectuer des opérations sur elles.
$ zipFile = new PhpZip ZipFile ();
$ matcher = $ zipFile -> matcher ();
Sélection des fichiers de l'archive un par un :
$ matcher
-> add ( ' entry name ' )
-> add ( ' another entry ' );
Sélectionnez plusieurs fichiers dans l'archive :
$ matcher -> add ([
' entry name ' ,
' another entry name ' ,
' path/ '
]);
Sélection de fichiers par expression régulière :
$ matcher -> match ( ' ~.jpe?g$~i ' );
Sélectionnez tous les fichiers de l'archive :
$ matcher -> all ();
count() - obtient le nombre d'entrées sélectionnées :
$ count = count ( $ matcher );
// or
$ count = $ matcher -> count ();
getMatches() - renvoie une liste des entrées sélectionnées :
$ entries = $ matcher -> getMatches ();
// example array contents: ['entry name', 'another entry name'];
invoquer() - invoque une fonction appelable sur les entrées sélectionnées :
// example
$ matcher -> invoke ( static function ( $ entryName ) use ( $ zipFile ) {
$ newName = preg_replace ( ' ~.(jpe?g)$~i ' , ' .no_optimize.$1 ' , $ entryName );
$ zipFile -> rename ( $ entryName , $ newName );
});
Fonctions pour travailler sur les entrées sélectionnées :
$ matcher -> delete (); // remove selected entries from a ZIP archive
$ matcher -> setPassword ( $ password ); // sets a new password for the selected entries
$ matcher -> setPassword ( $ password , $ encryptionMethod ); // sets a new password and encryption method to selected entries
$ matcher -> setEncryptionMethod ( $ encryptionMethod ); // sets the encryption method to the selected entries
$ matcher -> disableEncryption (); // disables encryption for selected entries
Prise en charge implémentée des méthodes de cryptage :
PhpZipConstantsZipEncryptionMethod::PKWARE
- Chiffrement PKWARE traditionnel (hérité)PhpZipConstantsZipEncryptionMethod::WINZIP_AES_256
- Cryptage WinZip AES 256 bits (recommandé)PhpZipConstantsZipEncryptionMethod::WINZIP_AES_192
- Chiffrement WinZip AES 192 bitsPhpZipConstantsZipEncryptionMethod::WINZIP_AES_128
- Cryptage WinZip AES 128 bits Définissez le mot de passe pour l'archive ouverte.
La définition d'un mot de passe n'est pas requise pour ajouter de nouvelles entrées ou supprimer des entrées existantes, mais si vous souhaitez extraire le contenu ou modifier la méthode/niveau de compression, la méthode de cryptage ou modifier le mot de passe, dans ce cas, le mot de passe doit être spécifié.
$ zipFile -> setReadPassword ( $ password );
Obtient un mot de passe pour la lecture d'une entrée définie par son nom.
$ zipFile -> setReadPasswordEntry ( $ entryName , $ password );
Définit un nouveau mot de passe pour tous les fichiers de l'archive.
Notez que cette méthode ne s'applique pas aux entrées ajoutées après l'exécution de cette méthode.
$ zipFile -> setPassword ( $ password );
Vous pouvez définir la méthode de cryptage :
$ encryptionMethod = PhpZip Constants ZipEncryptionMethod:: WINZIP_AES_256 ;
$ zipFile -> setPassword ( $ password , $ encryptionMethod );
Définit un nouveau mot de passe pour une entrée définie par son nom.
$ zipFile -> setPasswordEntry ( $ entryName , $ password );
Vous pouvez définir la méthode de cryptage :
$ encryptionMethod = PhpZip Constants ZipEncryptionMethod:: WINZIP_AES_256 ;
$ zipFile -> setPasswordEntry ( $ entryName , $ password , $ encryptionMethod );
Désactivez le cryptage pour toutes les entrées déjà présentes dans l'archive.
Notez que cette méthode ne s'applique pas aux entrées ajoutées après l'exécution de cette méthode.
$ zipFile -> disableEncryption ();
Désactivez le cryptage d'une entrée définie par son nom.
$ zipFile -> disableEncryptionEntry ( $ entryName );
Annulez toutes les modifications apportées dans l'archive.
$ zipFile -> unchangeAll ();
Annulez les modifications apportées au commentaire d'archive.
$ zipFile -> unchangeArchiveComment ();
Annuler les modifications d'une entrée définie par son nom.
$ zipFile -> unchangeEntry ( $ entryName );
Enregistre l'archive dans un fichier.
$ zipFile -> saveAsFile ( $ filename );
Écrit l'archive dans le flux.
// $fp = fopen($filename, 'w+b');
$ zipFile -> saveAsStream ( $ fp );
Génère une archive ZIP sous forme de chaîne.
$ rawZipArchiveBytes = $ zipFile -> outputAsString ();
Génère une archive ZIP vers le navigateur.
$ zipFile -> outputAsAttachment ( $ outputFilename );
Vous pouvez définir le type Mime :
$ mimeType = ' application/zip ' ;
$ zipFile -> outputAsAttachment ( $ outputFilename , $ mimeType );
Génère une archive ZIP en tant que réponse PSR-7.
La méthode de sortie peut être utilisée dans n’importe quel framework compatible PSR-7.
// $response = ....; // instance PsrHttpMessageResponseInterface
$ zipFile -> outputAsPsr7Response ( $ response , $ outputFilename );
Vous pouvez définir le type Mime :
$ mimeType = ' application/zip ' ;
$ zipFile -> outputAsPsr7Response ( $ response , $ outputFilename , $ mimeType );
Génère une archive ZIP sous forme de réponse Symfony.
La méthode de sortie peut être utilisée dans le framework Symfony.
$ response = $ zipFile -> outputAsSymfonyResponse ( $ outputFilename );
Vous pouvez définir le type Mime :
$ mimeType = ' application/zip ' ;
$ response = $ zipFile -> outputAsSymfonyResponse ( $ outputFilename , $ mimeType );
Exemple d'utilisation dans Symfony Controller :
<?php
namespace App Controller ;
use PhpZip ZipFile ;
use Symfony Component HttpFoundation Response ;
use Symfony Component Routing Annotation Route ;
class DownloadZipController
{
/**
* @Route("/downloads/{id}")
*
* @throws PhpZipExceptionZipException
*/
public function __invoke ( string $ id ): Response
{
$ zipFile = new ZipFile ();
$ zipFile [ ' file ' ] = ' contents ' ;
$ outputFilename = $ id . ' .zip ' ;
return $ zipFile -> outputAsSymfonyResponse ( $ outputFilename );
}
}
Enregistrez les modifications et rouvrez l'archive modifiée.
$ zipFile -> rewrite ();
Fermez les archives.
$ zipFile -> close ();
Installez les dépendances pour le développement :
composer install --dev
Exécutez les tests :
vendor/bin/phpunit
Les modifications sont documentées dans la page des versions.
Mettez à jour la version majeure dans le fichier composer.json
vers ^4.0
.
{
"require" : {
"nelexa/zip" : " ^4.0 "
}
}
Installez ensuite les mises à jour à l'aide Composer
:
composer update nelexa/zip
Mettez à jour votre code pour fonctionner avec la nouvelle version : BC
zipalign
fonctionnel. Cette fonctionnalité sera placée dans un package séparé nelexa/apkfile
. Mettez à jour la version majeure dans le fichier composer.json
vers ^3.0
.
{
"require" : {
"nelexa/zip" : " ^3.0 "
}
}
Installez ensuite les mises à jour à l'aide Composer
:
composer update nelexa/zip
Mettez à jour votre code pour fonctionner avec la nouvelle version :
ZipOutputFile
fusionnée avec ZipFile
et supprimée.new PhpZipZipOutputFile()
vers new PhpZipZipFile()
PhpZipZipFile::openFromFile($filename);
à (new PhpZipZipFile())->openFile($filename);
PhpZipZipOutputFile::openFromFile($filename);
à (new PhpZipZipFile())->openFile($filename);
PhpZipZipFile::openFromString($contents);
à (new PhpZipZipFile())->openFromString($contents);
PhpZipZipFile::openFromStream($stream);
à (new PhpZipZipFile())->openFromStream($stream);
PhpZipZipOutputFile::create()
vers new PhpZipZipFile()
PhpZipZipOutputFile::openFromZipFile(PhpZipZipFile $zipFile)
> (new PhpZipZipFile())->openFile($filename);
addFromFile
à addFile
setLevel
à setCompressionLevel
ZipFile::setPassword
à ZipFile::withReadPassword
ZipOutputFile::setPassword
à ZipFile::withNewPassword
ZipOutputFile::disableEncryptionAllEntries
vers ZipFile::withoutPassword
ZipOutputFile::setComment
à ZipFile::setArchiveComment
ZipFile::getComment
à ZipFile::getArchiveComment
addDir
, addFilesFromGlob
, addFilesFromRegex
.getLevel
setCompressionMethod
setEntryPassword