Sample code for 30+ languages & platforms
Lua

Create Zip in a BinData Object

See more Zip Examples

Recursively appends files in a directory tree and writes a zip archive into a Chilkat BinData object.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local zip = chilkat.Zip.new()

-- Initialize the zip object.  Because we will never actually write a zip file to the filesystem,
-- the filepath passed to NewZip does not matter.
local success = zip:new_zip("x.zip")
if not success then
    print(zip.last_error_text)
    return
end

-- Append a directory tree.  The call to AppendFiles does
-- not read the file contents or append them to the zip
-- object in memory.  It simply appends references
-- to the files so that when WriteBd, WriteZip, or WriteZipAndClose
-- is called, the referenced files are streamed and compressed
-- into the .zip output file (or BinData object).

local recurse = true
success = zip:append_files("c:/temp/a/*", recurse)
if not success then
    print(zip.last_error_text)
    return
end

-- Write the zip archive into the bdZip object.
local bdZip = chilkat.BinData.new()
success = zip:write_bd(bdZip)
if not success then
    print(zip.last_error_text)
    return
end

-- We could directly access the bytes of the zip archive, or perhaps
-- get the zip bytes in base64 format.
local zipAsBase64 = bdZip:get_encoded("base64")
print(zipAsBase64)

-- Or the zip can be used by some other Chilkat method call that accepts
-- a BinData object as an argument.