Optional ziparchive parameters
1. ZipArchive: addEmptyDir
Add a new file directory
2. ZipArchive: addFile
Add the file to the specified zip package.
3. ZipArchive: addFromString
Add the content to the added file at the same time.
4. ZipArchive: close
Disable ziparchive
5. ZipArchive: extrac.pdf
Decompress the package
6. ZipArchive: open
Open a zip package
7. ZipArchive: getStatusString
Returns the status content during compression, including error information and compression information.
8. ZipArchive: deleteIndex
Delete a file in the compressed package, for example, deleteIndex (0). Delete the first file.
9. ZipArchive: deleteName
Delete a file name in the package and delete the file.
......
*/
Instance
I. Decompress the zip file
The code is as follows: |
Copy code |
$ Zip = new ZipArchive; // Create a ZipArchive object /* Process zip files with ZipArchive objects $ Zip-> open parameter indicates the zip file name to be processed. If the operation on the zip file object is successful, $ zip-> open returns TRUE. */ If ($ zip-> open('test.zip ') = TRUE) { $ Zip-> extracloud ('images'); // suppose you want to decompress the package to the php $ Zip-> close (); // close the processed zip file }
|
2. Compress the file into a zip file
The code is as follows: |
Copy code |
$ Zip = new ZipArchive; /* $ Zip-> open the first parameter of this method indicates the zip file name to be processed. The second parameter indicates the processing mode. ZipArchive: OVERWRITE indicates that if the zip file exists, the original zip file will be overwritten. If the parameter uses ZIPARCHIVE: CREATE, the system will add content to the original zip file. If you do not want to add content to the zip file multiple times, we recommend that you use ZipArchive: OVERWRITE. If the zip file does not exist, the system automatically creates a new one. If the operation on the zip file object is successful, $ zip-> open returns TRUE. */ If ($ zip-> open('test.zip ', ZipArchive: OVERWRITE) === TRUE) { $ Zip-> addFile('image.txt '); // the file name is image.txt, in the current path $ Zip-> close (); }
|
3. Add the content appended to the zip file
The code is as follows: |
Copy code |
$ Zip = new ZipArchive; $ Res = $ zip-> open('test.zip ', ZipArchive: CREATE ); If ($ res = TRUE ){ $ Zip-> addFromString('test.txt ', 'File content goes here '); $ Zip-> close (); Echo 'OK '; } Else { Echo 'failed '; }
|
4. Package folders into zip files
The code is as follows: |
Copy code |
Function addFileToZip ($ path, $ zip ){ $ Handler = opendir ($ path); // specify $ path to open the current folder. /* Read all files and folders in the folder cyclically $ Filename = readdir ($ handler) assigns the read file name to $ filename during each loop, To avoid getting stuck in an endless loop, you need to make $ filename! = False. Be sure to use it! =, Because if the name of a file is '0' or is regarded as false by the system, use! = Will stop the loop */ While ($ filename = readdir ($ handler ))! = False ){ If ($ filename! = "." & Amp; $ filename! = "..") {// The folder names are '.' and '..'. Do not operate on them. If (is_dir ($ path. "/". $ filename) {// recursion AddFileToZip ($ path. "/". $ filename, $ zip ); } Else {// add the file to the zip object $ Zip-> addFile ($ path. "/". $ filename ); } } } @ Closedir ($ path ); } $ Zip = new ZipArchive (); If ($ zip-> open('images.zip ', ZipArchive: OVERWRITE) === TRUE ){ AddFileToZip ('images/', $ zip); // call a method to operate the root directory to be packaged, and pass the ZipArchive object to the method $ Zip-> close (); // close the processed zip file } |
If you only know the file name, but do not know the specific path of the file, you can search for the index of the specified file name, and then retrieve the content by the index.
The code is as follows: |
Copy code |
<? Php $ Zip = new ZipArchive; If ($ zip-> open('test.zip ') === TRUE ){ $ Index = $ zip-> locateName ('example. Php', ZIPARCHIVE: FL_NOCASE | ZIPARCHIVE: FL_NODIR ); $ Contents = $ zip-> getFromIndex ($ index ); } ?>
|
The locateName method is used to obtain the index. If a file with the same name exists in multiple paths in the compressed package, it seems that only the first index can be returned. To obtain the index of all files with the same name, you can only use the stupid method, loop search.
The code is as follows: |
Copy code |
<? Php $ Zip = new ZipArchive; If ($ zip-> open('test.zip ') === TRUE ){ For ($ I = 0; $ I <$ zip-> numFiles; $ I ++) { If (substr_count ($ zip-> getNameIndex ($ I), 'example. Php')> 0 ){ $ Contents = $ zip-> getFromIndex ($ I ); } } } ?> |