Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Perl) Controlling paths within a ZipHow to control the paths stored within a .zip.
use chilkat(); # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $zip = chilkat::CkZip->new(); # This is the directory structure on the local filesystem # from which we'll create .zip archives: # The root directory is /temp/filesToZip # # We have these files: # /temp/filesToZip/faxCover.doc # /temp/filesToZip/exe/Setup.exe # /temp/filesToZip/images/cheese.jpg # /temp/filesToZip/images/dude.gif # /temp/filesToZip/images/img3.gif # /temp/filesToZip/images/img4.gif # /temp/filesToZip/images/img5.gif # /temp/filesToZip/images/scream.jpg # /temp/filesToZip/images/imageInfo/scream.xml # /temp/filesToZip/images/imageInfo/cheese.xml # /temp/filesToZip/text/html/bonaireFishing.html # /temp/filesToZip/text/html/upload.html # /temp/filesToZip/text/txt/hello.txt # /temp/filesToZip/text/txt/HelloWorld123.txt # /temp/filesToZip/text/xml/hamlet.xml # /temp/filesToZip/text/xml/pigs.xml # There are three properties to help control the paths stored # within a .zip: # AppendFromDir # PathPrefix # DiscardPaths # # First we'll demonstrate AppendFromDir # When a directory tree is appended via AppendFiles or # AppendFilesEx, the AppendFromDir sets the base of the # directory tree appended (if the file pattern contains a # relative path, or no path at all). # Clear the zip object. $zip->NewZip("test1.zip"); $recurse = 1; $zip->put_AppendFromDir("/temp/filesToZip"); $success = $zip->AppendFiles("*.xml",$recurse); # The zip will contain: # images/imageInfo/scream.xml # images/imageInfo/cheese.xml # text/xml/hamlet.xml # text/xml/pigs.xml $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; exit; } # Clear the zip object. $success = $zip->NewZip("test2.zip"); $zip->put_AppendFromDir("/temp/filesToZip/images"); $success = $zip->AppendFiles("*.xml",$recurse); $zip->put_AppendFromDir("/temp/filesToZip/text"); $success = $zip->AppendFiles("*.xml",$recurse); # The zip will contain: # imageInfo/scream.xml # imageInfo/cheese.xml # xml/hamlet.xml # xml/pigs.xml $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; exit; } # The PathPrefix property adds an arbitrary path prefix to each # file in the .zip. # For example: # Clear the zip object. $success = $zip->NewZip("test3.zip"); $zip->put_PathPrefix("chilkat/"); $zip->put_AppendFromDir("/temp/filesToZip/images"); $success = $zip->AppendFiles("*.xml",$recurse); $zip->put_AppendFromDir("/temp/filesToZip/text"); $success = $zip->AppendFiles("*.xml",$recurse); # The zip will contain: # chilkat/imageInfo/scream.xml # chilkat/imageInfo/cheese.xml # chilkat/xml/hamlet.xml # chilkat/xml/pigs.xml $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; exit; } # The DiscardPaths property removes the path from each file # in the zip: # For example: # Clear the zip object. $success = $zip->NewZip("test4.zip"); $zip->put_PathPrefix(""); $zip->put_DiscardPaths(1); $zip->put_AppendFromDir("/temp/filesToZip/"); $success = $zip->AppendFiles("*",$recurse); # The zip will contain: # faxCover.doc # Setup.exe # cheese.jpg # dude.gif # img3.gif # img4.gif # img5.gif # scream.jpg # scream.xml # cheese.xml # bonaireFishing.html # upload.html # hello.txt # HelloWorld123.txt # hamlet.xml # pigs.xml $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; exit; } # You can combine PathPrefix with DiscardPaths: # Clear the zip object. $success = $zip->NewZip("test5.zip"); $zip->put_PathPrefix("chilkat/"); $zip->put_DiscardPaths(1); $zip->put_AppendFromDir("/temp/filesToZip/"); $success = $zip->AppendFiles("*",$recurse); # The zip will contain: # chilkat/faxCover.doc # chilkat/Setup.exe # chilkat/cheese.jpg # chilkat/dude.gif # chilkat/img3.gif # chilkat/img4.gif # chilkat/img5.gif # chilkat/scream.jpg # chilkat/scream.xml # chilkat/cheese.xml # chilkat/bonaireFishing.html # chilkat/upload.html # chilkat/hello.txt # chilkat/HelloWorld123.txt # chilkat/hamlet.xml # chilkat/pigs.xml $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; exit; } # One last example -- combine DiscardPaths with PathPrefix # with multiple calls to AppendFiles: # Clear the zip object. $success = $zip->NewZip("test6.zip"); $zip->put_DiscardPaths(1); $zip->put_AppendFromDir("/temp/filesToZip/"); # Get all .gif files: $zip->put_PathPrefix("gif/"); $success = $zip->AppendFiles("*.gif",$recurse); # Get all .jpg files: $zip->put_PathPrefix("jpg/"); $success = $zip->AppendFiles("*.jpg",$recurse); # Get all .xml files: $zip->put_PathPrefix("xml/"); $success = $zip->AppendFiles("*.xml",$recurse); # The zip will contain: # jpg/cheese.jpg # gif/dude.gif # gif/img3.gif # gif/img4.gif # gif/img5.gif # jpg/scream.jpg # xml/scream.xml # xml/cheese.xml # xml/hamlet.xml # xml/pigs.xml $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; exit; } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.