Sample code for 30+ languages & platforms
Tcl Requires Chilkat v11.0.0+

Create a Zip Entirely in Memory

See more Zip Examples

Demonstrates how to create a .zip from in-memory byte data and strings, and to write the .zip to an in-memory image.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set crypt [new_CkCrypt2]

set zip [new_CkZip]

set success [CkZip_NewZip $zip "test.zip"]
if {$success == 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkCrypt2 $crypt
    delete_CkZip $zip
    exit
}

#  Add the bytes 0x00 0x01 0x02 0x03 ... 0x0F as a file in the .zip
set bd [new_CkBinData]

CkBinData_AppendEncoded $bd "000102030405060708090A0B0C0D0E0F" "hex"
CkZip_AddBd $zip "binaryData.dat" $bd

#  Add the string "Hello World!" to the .zip
CkZip_AddString $zip "helloWorld.txt" "Hello World!" "utf-8"

set zipFileInMemory [new_CkByteData]

set success [CkZip_WriteToMemory $zip $zipFileInMemory]

#  We could save these files to a file, and it is a valid .zip
set fac [new_CkFileAccess]

set success [CkFileAccess_WriteEntireFile $fac "test.zip" $zipFileInMemory]
if {$success == 0} then {
    puts [CkFileAccess_lastErrorText $fac]
    delete_CkCrypt2 $crypt
    delete_CkZip $zip
    delete_CkBinData $bd
    delete_CkByteData $zipFileInMemory
    delete_CkFileAccess $fac
    exit
}

puts "Zip Created!"

delete_CkCrypt2 $crypt
delete_CkZip $zip
delete_CkBinData $bd
delete_CkByteData $zipFileInMemory
delete_CkFileAccess $fac