Lua
Lua
Controlling paths within a Zip
See more Zip Examples
How to control the paths stored within a .zip.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local zip = chilkat.Zip.new()
-- This is the directory structure on the local filesystem
-- from which we'll create .zip archives:
-- The root directory is /temp/filesToZip
--
-- We have these files:
-- /temp/filesToZip/faxCover.doc
-- /temp/filesToZip/exe/Setup.exe
-- /temp/filesToZip/images/cheese.jpg
-- /temp/filesToZip/images/dude.gif
-- /temp/filesToZip/images/img3.gif
-- /temp/filesToZip/images/img4.gif
-- /temp/filesToZip/images/img5.gif
-- /temp/filesToZip/images/scream.jpg
-- /temp/filesToZip/images/imageInfo/scream.xml
-- /temp/filesToZip/images/imageInfo/cheese.xml
-- /temp/filesToZip/text/html/bonaireFishing.html
-- /temp/filesToZip/text/html/upload.html
-- /temp/filesToZip/text/txt/hello.txt
-- /temp/filesToZip/text/txt/HelloWorld123.txt
-- /temp/filesToZip/text/xml/hamlet.xml
-- /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:new_zip("test1.zip")
local recurse = true
zip.append_from_dir = "/temp/filesToZip"
local success = zip:append_files("*.xml", recurse)
-- The zip will contain:
-- images/imageInfo/scream.xml
-- images/imageInfo/cheese.xml
-- text/xml/hamlet.xml
-- text/xml/pigs.xml
success = zip:write_zip_and_close()
if not success then
print(zip.last_error_text)
return
end
-- Clear the zip object.
success = zip:new_zip("test2.zip")
zip.append_from_dir = "/temp/filesToZip/images"
success = zip:append_files("*.xml", recurse)
zip.append_from_dir = "/temp/filesToZip/text"
success = zip:append_files("*.xml", recurse)
-- The zip will contain:
-- imageInfo/scream.xml
-- imageInfo/cheese.xml
-- xml/hamlet.xml
-- xml/pigs.xml
success = zip:write_zip_and_close()
if not success then
print(zip.last_error_text)
return
end
-- The PathPrefix property adds an arbitrary path prefix to each
-- file in the .zip.
-- For example:
-- Clear the zip object.
success = zip:new_zip("test3.zip")
zip.path_prefix = "chilkat/"
zip.append_from_dir = "/temp/filesToZip/images"
success = zip:append_files("*.xml", recurse)
zip.append_from_dir = "/temp/filesToZip/text"
success = zip:append_files("*.xml", recurse)
-- The zip will contain:
-- chilkat/imageInfo/scream.xml
-- chilkat/imageInfo/cheese.xml
-- chilkat/xml/hamlet.xml
-- chilkat/xml/pigs.xml
success = zip:write_zip_and_close()
if not success then
print(zip.last_error_text)
return
end
-- The DiscardPaths property removes the path from each file
-- in the zip:
-- For example:
-- Clear the zip object.
success = zip:new_zip("test4.zip")
zip.path_prefix = ""
zip.discard_paths = true
zip.append_from_dir = "/temp/filesToZip/"
success = zip:append_files("*", 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:write_zip_and_close()
if not success then
print(zip.last_error_text)
return
end
-- You can combine PathPrefix with DiscardPaths:
-- Clear the zip object.
success = zip:new_zip("test5.zip")
zip.path_prefix = "chilkat/"
zip.discard_paths = true
zip.append_from_dir = "/temp/filesToZip/"
success = zip:append_files("*", 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:write_zip_and_close()
if not success then
print(zip.last_error_text)
return
end
-- One last example -- combine DiscardPaths with PathPrefix
-- with multiple calls to AppendFiles:
-- Clear the zip object.
success = zip:new_zip("test6.zip")
zip.discard_paths = true
zip.append_from_dir = "/temp/filesToZip/"
-- Get all .gif files:
zip.path_prefix = "gif/"
success = zip:append_files("*.gif", recurse)
-- Get all .jpg files:
zip.path_prefix = "jpg/"
success = zip:append_files("*.jpg", recurse)
-- Get all .xml files:
zip.path_prefix = "xml/"
success = zip:append_files("*.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:write_zip_and_close()
if not success then
print(zip.last_error_text)
return
end