SQL Server Stored Procedure Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

SQL Server
Stored Procedure Examples

Quick Start
Encryption
File Access
IMAP
POP3
SMTP
Email Object
FTP
HTML-to-XML
HTTP
MHT
MIME
RSA Encryption
Socket
Spider
String
Tar
Upload
XML
XMP
Zip

Byte Array
RSS
Atom
Self-Extractor

Controlling filepaths within a Zip

How to control the filepaths stored within a .zip.

Download Chilkat Zip ActiveX

CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @zip int
    EXEC @hr = sp_OACreate 'Chilkat.Zip2', @zip OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int

    --  Any string unlocks the component for the 1st 30-days.
    EXEC sp_OAMethod @zip, 'UnlockComponent', @success OUT, 'Anything for 30-day trial'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  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.
    EXEC sp_OAMethod @zip, 'NewZip', NULL, 'test1.zip'

    DECLARE @recurse int

    SELECT @recurse = 1

    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.xml', @recurse

    --  The zip will contain:
    --  images\imageInfo\scream.xml
    --  images\imageInfo\cheese.xml
    --  text\xml\hamlet.xml
    --  text\xml\pigs.xml

    EXEC sp_OAMethod @zip, 'WriteZipAndClose', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  Clear the zip object.
    EXEC sp_OAMethod @zip, 'NewZip', NULL, 'test2.zip'

    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/images'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.xml', @recurse
    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/text'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.xml', @recurse

    --  The zip will contain:
    --  imageInfo\scream.xml
    --  imageInfo\cheese.xml
    --  xml\hamlet.xml
    --  xml\pigs.xml

    EXEC sp_OAMethod @zip, 'WriteZipAndClose', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  The PathPrefix property adds an arbitrary path prefix to each
    --  file in the .zip.
    --  For example:

    --  Clear the zip object.
    EXEC sp_OAMethod @zip, 'NewZip', NULL, 'test3.zip'

    EXEC sp_OASetProperty @zip, 'PathPrefix', 'chilkat/'

    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/images'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.xml', @recurse
    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/text'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.xml', @recurse

    --  The zip will contain:
    --  chilkat\imageInfo\scream.xml
    --  chilkat\imageInfo\cheese.xml
    --  chilkat\xml\hamlet.xml
    --  chilkat\xml\pigs.xml

    EXEC sp_OAMethod @zip, 'WriteZipAndClose', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  The DiscardPaths property removes the path from each file
    --  in the zip:
    --  For example:

    --  Clear the zip object.
    EXEC sp_OAMethod @zip, 'NewZip', NULL, 'test4.zip'

    EXEC sp_OASetProperty @zip, 'PathPrefix', ''
    EXEC sp_OASetProperty @zip, 'DiscardPaths', 1

    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*', @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

    EXEC sp_OAMethod @zip, 'WriteZipAndClose', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  You can combine PathPrefix with DiscardPaths:

    --  Clear the zip object.
    EXEC sp_OAMethod @zip, 'NewZip', NULL, 'test5.zip'

    EXEC sp_OASetProperty @zip, 'PathPrefix', 'chilkat/'
    EXEC sp_OASetProperty @zip, 'DiscardPaths', 1

    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*', @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

    EXEC sp_OAMethod @zip, 'WriteZipAndClose', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  One last example -- combine DiscardPaths with PathPrefix
    --  with multiple calls to AppendFiles:

    --  Clear the zip object.
    EXEC sp_OAMethod @zip, 'NewZip', NULL, 'test6.zip'

    EXEC sp_OASetProperty @zip, 'DiscardPaths', 1
    EXEC sp_OASetProperty @zip, 'AppendFromDir', 'c:/temp/filesToZip/'

    --  Get all .gif files:
    EXEC sp_OASetProperty @zip, 'PathPrefix', 'gif/'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.gif', @recurse

    --  Get all .jpg files:
    EXEC sp_OASetProperty @zip, 'PathPrefix', 'jpg/'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.jpg', @recurse

    --  Get all .xml files:
    EXEC sp_OASetProperty @zip, 'PathPrefix', 'xml/'
    EXEC sp_OAMethod @zip, 'AppendFiles', NULL, '*.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

    EXEC sp_OAMethod @zip, 'WriteZipAndClose', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END
END
GO

 

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

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