Programming Examples

ChilkatHOMEASPVisual BasicVB.NETC#CC++MFCDelphiFoxProJavaPerlPythonRubySQL ServerVBScript

PHP ActiveX Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3


 

 

 

 

 

 

 

 

Controlling filepaths within a Zip

How to control the filepaths stored within a .zip.

Download Chilkat 32-bit Zip ActiveX (.msi) (includes objects for .zip, .gz, .bz2, and .Z)

Download All 32-bit Chilkat ActiveX Components (.zip)

Download All 64-bit Chilkat ActiveX Components (.zip)

<?php

$zip = new COM("Chilkat.Zip2");

//  Any string unlocks the component for the 1st 30-days.
$success = $zip->UnlockComponent('Anything for 30-day trial');
if ($success != true) {
    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 = true;

$zip->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 != true) {
    print $zip->lastErrorText() . "\n";
    exit;
}

//  Clear the zip object.
$zip->NewZip('test2.zip');

$zip->AppendFromDir = 'c:/temp/filesToZip/images';
$zip->AppendFiles('*.xml',$recurse);
$zip->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 != true) {
    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->PathPrefix = 'chilkat/';

$zip->AppendFromDir = 'c:/temp/filesToZip/images';
$zip->AppendFiles('*.xml',$recurse);
$zip->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 != true) {
    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->PathPrefix = '';
$zip->DiscardPaths = true;

$zip->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 != true) {
    print $zip->lastErrorText() . "\n";
    exit;
}

//  You can combine PathPrefix with DiscardPaths:

//  Clear the zip object.
$zip->NewZip('test5.zip');

$zip->PathPrefix = 'chilkat/';
$zip->DiscardPaths = true;

$zip->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 != true) {
    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->DiscardPaths = true;
$zip->AppendFromDir = 'c:/temp/filesToZip/';

//  Get all .gif files:
$zip->PathPrefix = 'gif/';
$zip->AppendFiles('*.gif',$recurse);

//  Get all .jpg files:
$zip->PathPrefix = 'jpg/';
$zip->AppendFiles('*.jpg',$recurse);

//  Get all .xml files:
$zip->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 != true) {
    print $zip->lastErrorText() . "\n";
    exit;
}

?>

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.