Perl Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Perl Examples

Quick Start
Perl Unicode
Perl Byte Array
Perl Certs
Perl Email
Perl Encryption
Perl FTP
HTML-to-XML
Perl HTTP
Perl IMAP
Perl MHT
Perl MIME
Perl RSA
Perl S/MIME
Perl Signatures
Perl Socket
Perl Spider
Perl Tar
Perl Upload
Perl XML
Perl XMP
Perl Zip

More Examples...
String
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA
SSH Key
SSH
SSH Tunnel
SFTP

Unreleased...
Bzip2
LZW
Bz2
Icon

 

 

 

 

 

 

 

Controlling filepaths within a Zip

How to control the filepaths stored within a .zip.

Download Chilkat Perl Module

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.