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. 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.