Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
Controlling filepaths within a ZipHow to control the filepaths stored within a .zip. use chilkat; $zip = new chilkat::CkZip(); # Any string unlocks the component for the 1st 30-days. $success = $zip->UnlockComponent("Anything for 30-day trial"); if ($success != 1) { print $zip->lastErrorText() . "\n"; exit; } # This is the directory structure on the local filesystem # from which we'll create .zip archives: # The root directory is c:\temp\filesToZip # # We have these files: # c:\temp\filesToZip\faxCover.doc # c:\temp\filesToZip\exe\Setup.exe # c:\temp\filesToZip\images\cheese.jpg # c:\temp\filesToZip\images\dude.gif # c:\temp\filesToZip\images\img3.gif # c:\temp\filesToZip\images\img4.gif # c:\temp\filesToZip\images\img5.gif # c:\temp\filesToZip\images\scream.jpg # c:\temp\filesToZip\images\imageInfo\scream.xml # c:\temp\filesToZip\images\imageInfo\cheese.xml # c:\temp\filesToZip\text\html\bonaireFishing.html # c:\temp\filesToZip\text\html\upload.html # c:\temp\filesToZip\text\txt\hello.txt # c:\temp\filesToZip\text\txt\HelloWorld123.txt # c:\temp\filesToZip\text\xml\hamlet.xml # c:\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("c:/temp/filesToZip"); $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() . "\n"; exit; } # Clear the zip object. $zip->NewZip("test2.zip"); $zip->put_AppendFromDir("c:/temp/filesToZip/images"); $zip->AppendFiles("*.xml",$recurse); $zip->put_AppendFromDir("c:/temp/filesToZip/text"); $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() . "\n"; exit; } # The PathPrefix property adds an arbitrary path prefix to each # file in the .zip. # For example: # Clear the zip object. $zip->NewZip("test3.zip"); $zip->put_PathPrefix("chilkat/"); $zip->put_AppendFromDir("c:/temp/filesToZip/images"); $zip->AppendFiles("*.xml",$recurse); $zip->put_AppendFromDir("c:/temp/filesToZip/text"); $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() . "\n"; exit; } # The DiscardPaths property removes the path from each file # in the zip: # For example: # Clear the zip object. $zip->NewZip("test4.zip"); $zip->put_PathPrefix(""); $zip->put_DiscardPaths(1); $zip->put_AppendFromDir("c:/temp/filesToZip/"); $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() . "\n"; exit; } # You can combine PathPrefix with DiscardPaths: # Clear the zip object. $zip->NewZip("test5.zip"); $zip->put_PathPrefix("chilkat/"); $zip->put_DiscardPaths(1); $zip->put_AppendFromDir("c:/temp/filesToZip/"); $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() . "\n"; exit; } # One last example -- combine DiscardPaths with PathPrefix # with multiple calls to AppendFiles: # Clear the zip object. $zip->NewZip("test6.zip"); $zip->put_DiscardPaths(1); $zip->put_AppendFromDir("c:/temp/filesToZip/"); # Get all .gif files: $zip->put_PathPrefix("gif/"); $zip->AppendFiles("*.gif",$recurse); # Get all .jpg files: $zip->put_PathPrefix("jpg/"); $zip->AppendFiles("*.jpg",$recurse); # Get all .xml files: $zip->put_PathPrefix("xml/"); $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() . "\n"; exit; } |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.