PhpZip
adalah perpustakaan php untuk pekerjaan tambahan dengan arsip ZIP.
Dokumentasi Rusia
Versi | PHP | Dokumentasi |
---|---|---|
^4.0 (tuan) | ^7.4|^8.0 | saat ini |
^3.0 | ^5.5|^7.0 | Dokumen v3.3 |
PhpZipZipFile
php-zip
dan kelas ZipArchive
).php-bz2
.ZIP64
(ukuran file lebih dari 4 GB atau jumlah entri dalam arsip lebih dari 65535).Perhatian!
Untuk sistem 32-bit, metode enkripsi
Traditional PKWARE Encryption (ZipCrypto)
saat ini tidak didukung. Gunakan metode enkripsiWinZIP AES Encryption
, bila memungkinkan.
Traditional PKWARE Encryption (ZipCrypto)
dan metode enkripsi WinZIP AES Encryption
.PHP
>= 7.4 atau PHP
>= 8.0 (sebaiknya 64-bit).bzip2
ekstensi php opsional untuk kompresi BZIP2.openssl
ekstensi php opsional untuk dukungan WinZip Aes Encryption
. composer require nelexa/zip
Versi stabil terbaru:
// 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 ();
}
Contoh lain dapat ditemukan di folder tests/
Entri Zip - file atau folder dalam arsip ZIP. Setiap entri dalam arsip mempunyai properti tertentu, misalnya: nama file, metode kompresi, metode enkripsi, ukuran file sebelum kompresi, ukuran file setelah kompresi, CRC32 dan lain-lain.
PhpZipZipFile
SplFileInfo
ke arsip ZIP.SymfonyComponentFinderFinder
ke arsip ZIP.Menginisialisasi arsip ZIP
$ zipFile = new PhpZip ZipFile ();
Membuka arsip zip dari sebuah file.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFile ( ' file.zip ' );
Membuka arsip zip dari sebuah string.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFromString ( $ stringContents );
Membuka arsip zip dari aliran.
$ stream = fopen ( ' file.zip ' , ' rb ' );
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFromStream ( $ stream );
Mengembalikan jumlah entri dalam arsip.
$ zipFile = new PhpZip ZipFile ();
$ count = count ( $ zipFile );
// or
$ count = $ zipFile -> count ();
Mengembalikan daftar file arsip.
$ zipFile = new PhpZip ZipFile ();
$ listFiles = $ zipFile -> getListFiles ();
// example array contents:
// array (
// 0 => 'info.txt',
// 1 => 'path/to/file.jpg',
// 2 => 'another path/',
// 3 => '0',
// )
Mengembalikan konten entri menggunakan namanya.
// $entryName = 'path/to/example-entry-name.txt';
$ zipFile = new PhpZip ZipFile ();
$ contents = $ zipFile [ $ entryName ];
// or
$ contents = $ zipFile -> getEntryContents ( $ entryName );
Memeriksa apakah ada entri di arsip.
// $entryName = 'path/to/example-entry-name.txt';
$ zipFile = new PhpZip ZipFile ();
$ hasEntry = isset ( $ zipFile [ $ entryName ]);
// or
$ hasEntry = $ zipFile -> hasEntry ( $ entryName );
Memeriksa apakah entri dalam arsip adalah direktori.
// $entryName = 'path/to/';
$ zipFile = new PhpZip ZipFile ();
$ isDirectory = $ zipFile -> isDirectory ( $ entryName );
Ekstrak isi arsip. Direktori harus ada.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> extractTo ( $ directory );
Ekstrak beberapa file ke direktori. Direktori harus ada.
// $toDirectory = '/tmp';
$ extractOnlyFiles = [
' filename1 ' ,
' filename2 ' ,
' dir/dir/dir/ '
];
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> extractTo ( $ toDirectory , $ extractOnlyFiles );
ZipFile
adalah sebuah iterator. Dapat mengulangi semua entri di loop foreach
.
foreach ( $ zipFile as $ entryName => $ contents ){
echo " Filename: $ entryName " . PHP_EOL ;
echo " Contents: $ contents " . PHP_EOL ;
echo ' ----------------------------- ' . PHP_EOL ;
}
Dapat mengulangi melalui 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 ();
}
Mengembalikan komentar arsip Zip.
$ zipFile = new PhpZip ZipFile ();
$ commentArchive = $ zipFile -> getArchiveComment ();
Mengembalikan komentar entri menggunakan nama entri.
$ zipFile = new PhpZip ZipFile ();
$ commentEntry = $ zipFile -> getEntryComment ( $ entryName );
Semua metode untuk menambahkan entri ke arsip ZIP memungkinkan Anda menentukan metode untuk mengompresi konten.
Tersedia metode kompresi berikut:
PhpZipConstantsZipCompressionMethod::STORED
- tanpa kompresiPhpZipConstantsZipCompressionMethod::DEFLATED
- Mengempiskan kompresiPhpZipConstantsZipCompressionMethod::BZIP2
- Kompresi Bzip2 dengan ekstensi ext-bz2
Menambahkan file ke arsip ZIP dari jalur yang diberikan.
$ 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
Menambahkan SplFileInfo
ke arsip 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 ,
]);
Menambahkan file dari SymfonyComponentFinderFinder
ke arsip 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 ' )
]);
Menambahkan file ke arsip ZIP menggunakan isinya.
$ 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
Menambahkan entri dari aliran ke arsip 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
Tambahkan direktori baru.
$ zipFile = new PhpZip ZipFile ();
// $path = "path/to/";
$ zipFile -> addEmptyDir ( $ path );
// or
$ zipFile [ $ path ] = null ;
Menambahkan semua entri dari array.
$ 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 );
Menambahkan file ke arsip dari direktori di jalur yang ditentukan tanpa subdirektori.
$ 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
Menambahkan file ke arsip dari direktori di jalur yang ditentukan dengan subdirektori.
$ 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
Menambahkan file dari iterator direktori.
// $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
Contoh dengan beberapa file yang diabaikan:
$ 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 );
Menambahkan file dari direktori dengan pola glob tanpa subdirektori.
$ 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
Menambahkan file dari direktori dengan pola glob dengan subdirektori.
$ 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
Menambahkan file dari direktori dengan pola PCRE tanpa subdirektori.
$ 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
Menambahkan file dari direktori dengan pola PCRE dengan subdirektori.
$ 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
Menghapus entri dalam arsip menggunakan namanya.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromName ( $ entryName );
Menghapus entri dalam arsip menggunakan pola glob.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> delete all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromGlob ( $ globPattern );
Menghapus entri dalam arsip menggunakan pola 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 );
Menghapus semua entri dalam arsip ZIP.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteAll ();
Mengganti nama entri yang ditentukan oleh namanya.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> rename ( $ oldName , $ newName );
Atur tingkat kompresi untuk semua file dalam arsip.
Perhatikan bahwa metode ini tidak berlaku untuk entri yang ditambahkan setelah metode ini dijalankan.
Secara default, tingkat kompresi adalah 5 ( PhpZipConstantsZipCompressionLevel::NORMAL
) atau tingkat kompresi yang ditentukan dalam arsip untuk kompresi Deflate.
Nilai berkisar dari 1 ( PhpZipConstantsZipCompressionLevel::SUPER_FAST
) hingga 9 ( PhpZipConstantsZipCompressionLevel::MAXIMUM
) didukung. Semakin tinggi angkanya, semakin baik dan lama kompresinya.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionLevel ( PhpZip Constants ZipCompressionLevel:: MAXIMUM );
Menyetel tingkat kompresi entri berdasarkan namanya.
Nilai berkisar dari 1 ( PhpZipConstantsZipCompressionLevel::SUPER_FAST
) hingga 9 ( PhpZipConstantsZipCompressionLevel::MAXIMUM
) didukung. Semakin tinggi angkanya, semakin baik dan lama kompresinya.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionLevelEntry ( $ entryName , PhpZip Constants ZipCompressionLevel:: FAST );
Menetapkan metode kompresi untuk entri berdasarkan namanya.
Tersedia metode kompresi berikut:
PhpZipConstantsZipCompressionMethod::STORED
- Tanpa kompresiPhpZipConstantsZipCompressionMethod::DEFLATED
- Mengempiskan kompresiPhpZipConstantsZipCompressionMethod::BZIP2
- Kompresi Bzip2 dengan ekstensi ext-bz2
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionMethodEntry ( $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED );
Atur komentar pada arsip ZIP.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setArchiveComment ( $ commentArchive );
Atur komentar entri yang ditentukan berdasarkan namanya.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setEntryComment ( $ entryName , $ comment );
Memilih entri dalam arsip untuk melakukan operasi pada entri tersebut.
$ zipFile = new PhpZip ZipFile ();
$ matcher = $ zipFile -> matcher ();
Memilih file dari arsip satu per satu:
$ matcher
-> add ( ' entry name ' )
-> add ( ' another entry ' );
Pilih beberapa file dalam arsip:
$ matcher -> add ([
' entry name ' ,
' another entry name ' ,
' path/ '
]);
Memilih file dengan ekspresi reguler:
$ matcher -> match ( ' ~.jpe?g$~i ' );
Pilih semua file dalam arsip:
$ matcher -> all ();
count() - mendapatkan jumlah entri yang dipilih:
$ count = count ( $ matcher );
// or
$ count = $ matcher -> count ();
getMatches() - mengembalikan daftar entri yang dipilih:
$ entries = $ matcher -> getMatches ();
// example array contents: ['entry name', 'another entry name'];
invoke() - memanggil fungsi yang dapat dipanggil pada entri yang dipilih:
// example
$ matcher -> invoke ( static function ( $ entryName ) use ( $ zipFile ) {
$ newName = preg_replace ( ' ~.(jpe?g)$~i ' , ' .no_optimize.$1 ' , $ entryName );
$ zipFile -> rename ( $ entryName , $ newName );
});
Fungsi untuk mengerjakan entri yang dipilih:
$ 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
Dukungan yang diterapkan untuk metode enkripsi:
PhpZipConstantsZipEncryptionMethod::PKWARE
- Enkripsi PKWARE tradisional (warisan)PhpZipConstantsZipEncryptionMethod::WINZIP_AES_256
- Enkripsi WinZip AES 256 bit (disarankan)PhpZipConstantsZipEncryptionMethod::WINZIP_AES_192
- Enkripsi WinZip AES 192 bitPhpZipConstantsZipEncryptionMethod::WINZIP_AES_128
- enkripsi WinZip AES 128 bit Tetapkan kata sandi untuk arsip terbuka.
Menetapkan kata sandi tidak diperlukan untuk menambah entri baru atau menghapus entri yang sudah ada, tetapi jika Anda ingin mengekstrak konten atau mengubah metode/tingkat kompresi, metode enkripsi, atau mengubah kata sandi, dalam hal ini kata sandi harus ditentukan.
$ zipFile -> setReadPassword ( $ password );
Mendapat kata sandi untuk membaca entri yang ditentukan oleh namanya.
$ zipFile -> setReadPasswordEntry ( $ entryName , $ password );
Menetapkan kata sandi baru untuk semua file dalam arsip.
Perhatikan bahwa metode ini tidak berlaku untuk entri yang ditambahkan setelah metode ini dijalankan.
$ zipFile -> setPassword ( $ password );
Anda dapat mengatur metode enkripsi:
$ encryptionMethod = PhpZip Constants ZipEncryptionMethod:: WINZIP_AES_256 ;
$ zipFile -> setPassword ( $ password , $ encryptionMethod );
Menetapkan kata sandi baru untuk entri yang ditentukan berdasarkan namanya.
$ zipFile -> setPasswordEntry ( $ entryName , $ password );
Anda dapat mengatur metode enkripsi:
$ encryptionMethod = PhpZip Constants ZipEncryptionMethod:: WINZIP_AES_256 ;
$ zipFile -> setPasswordEntry ( $ entryName , $ password , $ encryptionMethod );
Nonaktifkan enkripsi untuk semua entri yang sudah ada di arsip.
Perhatikan bahwa metode ini tidak berlaku untuk entri yang ditambahkan setelah metode ini dijalankan.
$ zipFile -> disableEncryption ();
Nonaktifkan enkripsi entri yang ditentukan berdasarkan namanya.
$ zipFile -> disableEncryptionEntry ( $ entryName );
Membatalkan semua perubahan yang dilakukan pada arsip.
$ zipFile -> unchangeAll ();
Membatalkan perubahan pada komentar arsip.
$ zipFile -> unchangeArchiveComment ();
Membatalkan perubahan entri yang ditentukan oleh namanya.
$ zipFile -> unchangeEntry ( $ entryName );
Menyimpan arsip ke file.
$ zipFile -> saveAsFile ( $ filename );
Menulis arsip ke aliran.
// $fp = fopen($filename, 'w+b');
$ zipFile -> saveAsStream ( $ fp );
Menghasilkan arsip ZIP sebagai string.
$ rawZipArchiveBytes = $ zipFile -> outputAsString ();
Menghasilkan arsip ZIP ke browser.
$ zipFile -> outputAsAttachment ( $ outputFilename );
Anda dapat mengatur Tipe Mime:
$ mimeType = ' application/zip ' ;
$ zipFile -> outputAsAttachment ( $ outputFilename , $ mimeType );
Menghasilkan arsip ZIP sebagai Respons PSR-7.
Metode keluaran dapat digunakan dalam kerangka kerja apa pun yang kompatibel dengan PSR-7.
// $response = ....; // instance PsrHttpMessageResponseInterface
$ zipFile -> outputAsPsr7Response ( $ response , $ outputFilename );
Anda dapat mengatur Tipe Mime:
$ mimeType = ' application/zip ' ;
$ zipFile -> outputAsPsr7Response ( $ response , $ outputFilename , $ mimeType );
Menghasilkan arsip ZIP sebagai Symfony Response.
Metode keluaran dapat digunakan dalam kerangka Symfony.
$ response = $ zipFile -> outputAsSymfonyResponse ( $ outputFilename );
Anda dapat mengatur Tipe Mime:
$ mimeType = ' application/zip ' ;
$ response = $ zipFile -> outputAsSymfonyResponse ( $ outputFilename , $ mimeType );
Contoh penggunaan di 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 );
}
}
Simpan perubahan dan buka kembali arsip yang diubah.
$ zipFile -> rewrite ();
Tutup arsip.
$ zipFile -> close ();
Instal dependensi untuk pengembangan:
composer install --dev
Jalankan tes:
vendor/bin/phpunit
Perubahan didokumentasikan di halaman rilis.
Perbarui versi utama dalam file composer.json
menjadi ^4.0
.
{
"require" : {
"nelexa/zip" : " ^4.0 "
}
}
Kemudian instal pembaruan menggunakan Composer
:
composer update nelexa/zip
Perbarui kode Anda agar berfungsi dengan versi baru: BC
zipalign
. Fungsionalitas ini akan ditempatkan dalam paket terpisah nelexa/apkfile
. Perbarui versi utama dalam file composer.json
menjadi ^3.0
.
{
"require" : {
"nelexa/zip" : " ^3.0 "
}
}
Kemudian instal pembaruan menggunakan Composer
:
composer update nelexa/zip
Perbarui kode Anda agar berfungsi dengan versi baru:
ZipOutputFile
digabungkan ke ZipFile
dan dihapus.new PhpZipZipOutputFile()
ke new PhpZipZipFile()
PhpZipZipFile::openFromFile($filename);
ke (new PhpZipZipFile())->openFile($filename);
PhpZipZipOutputFile::openFromFile($filename);
ke (new PhpZipZipFile())->openFile($filename);
PhpZipZipFile::openFromString($contents);
ke (new PhpZipZipFile())->openFromString($contents);
PhpZipZipFile::openFromStream($stream);
ke (new PhpZipZipFile())->openFromStream($stream);
PhpZipZipOutputFile::create()
ke new PhpZipZipFile()
PhpZipZipOutputFile::openFromZipFile(PhpZipZipFile $zipFile)
> (new PhpZipZipFile())->openFile($filename);
addFromFile
ke addFile
setLevel
ke setCompressionLevel
ZipFile::setPassword
ke ZipFile::withReadPassword
ZipOutputFile::setPassword
ke ZipFile::withNewPassword
ZipOutputFile::disableEncryptionAllEntries
ke ZipFile::withoutPassword
ZipOutputFile::setComment
ke ZipFile::setArchiveComment
ZipFile::getComment
ke ZipFile::getArchiveComment
addDir
, addFilesFromGlob
, addFilesFromRegex
.getLevel
setCompressionMethod
setEntryPassword