Lua
Lua
Unzip a ZIP Entry Directly into a BinData Object Using ZipEntry.UnzipToBd
See more Zip Examples
This example demonstrates how to use the ZipEntry.UnzipToBd method to inflate a ZIP entry directly into a BinData object.
The entry contents are uncompressed entirely in memory without creating a file on disk.
This is useful when:
- Processing ZIP entry data entirely in memory
- Avoiding temporary filesystem files
- Working with binary files such as images, PDFs, or certificates
- Passing uncompressed ZIP data directly to other APIs
The example opens a ZIP archive, locates a PDF entry, inflates it into a BinData object, and then writes the uncompressed bytes to a new file.
Suppose the ZIP archive contains:
docs/report.pdf The entry is uncompressed directly into memory before optionally being saved to:
qa_output/report.pdf
Chilkat Lua Downloads
local chilkat = require("chilkat")
local zip = chilkat.Zip.new()
-- Open an existing ZIP archive.
local success = zip:open_zip("qa_data/zips/documents.zip")
if not success then
print(zip.last_error_text)
return
end
-- Locate the PDF entry within the ZIP archive.
local entry = chilkat.ZipEntry.new()
success = zip:entry_of("docs/report.pdf", entry)
if not success then
print("ZIP entry not found.")
zip:close_zip()
return
end
-- ------------------------------------------------------------
-- Inflate the ZIP entry directly into a BinData object.
--
-- The uncompressed bytes are stored entirely in memory.
--
local pdfData = chilkat.BinData.new()
success = entry:unzip_to_bd(pdfData)
if not success then
print(entry.last_error_text)
return
end
print("Uncompressed size = " .. pdfData.num_bytes)
print("")
-- ------------------------------------------------------------
-- Optionally save the uncompressed bytes to a file.
--
success = pdfData:write_file("qa_output/report.pdf")
if not success then
print(pdfData.last_error_text)
return
end
zip:close_zip()
print("PDF extracted successfully.")