DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoZip
Variant vEntry
Handle hoEntry
Variant vPdfData
Handle hoPdfData
String sTemp1
Integer iTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatZip)) To hoZip
If (Not(IsComObjectCreated(hoZip))) Begin
Send CreateComObject of hoZip
End
// Open an existing ZIP archive.
Get ComOpenZip Of hoZip "qa_data/zips/documents.zip" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// Locate the PDF entry within the ZIP archive.
Get Create (RefClass(cComChilkatZipEntry)) To hoEntry
If (Not(IsComObjectCreated(hoEntry))) Begin
Send CreateComObject of hoEntry
End
Get pvComObject of hoEntry to vEntry
Get ComEntryOf Of hoZip "docs/report.pdf" vEntry To iSuccess
If (iSuccess = False) Begin
Showln "ZIP entry not found."
Send ComCloseZip To hoZip
Procedure_Return
End
// ------------------------------------------------------------
// Inflate the ZIP entry directly into a BinData object.
//
// The uncompressed bytes are stored entirely in memory.
//
Get Create (RefClass(cComChilkatBinData)) To hoPdfData
If (Not(IsComObjectCreated(hoPdfData))) Begin
Send CreateComObject of hoPdfData
End
Get pvComObject of hoPdfData to vPdfData
Get ComUnzipToBd Of hoEntry vPdfData To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEntry To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComNumBytes Of hoPdfData To iTemp1
Showln "Uncompressed size = " iTemp1
Showln ""
// ------------------------------------------------------------
// Optionally save the uncompressed bytes to a file.
//
Get ComWriteFile Of hoPdfData "qa_output/report.pdf" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPdfData To sTemp1
Showln sTemp1
Procedure_Return
End
Send ComCloseZip To hoZip
Showln "PDF extracted successfully."
End_Procedure