Sample code for 30+ languages & platforms
Tcl

Download a Zip from a URL and OpenBd. (No .zip file is created)

See more Zip Examples

Demonstrates how to download a .zip from a URL, opens the Zip, and gets the contents of a file. No file is ever written.

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 http [new_CkHttp]

set bd [new_CkBinData]

# This URL is valid and can be tested...
set success [CkHttp_QuickGetBd $http "https://chilkatdownload.com/example_data/hamlet.zip" $bd]
if {[CkHttp_get_LastMethodSuccess $http] == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkBinData $bd
    exit
}

set zip [new_CkZip]

# Open the zip from the bytes contained in bd.
set success [CkZip_OpenBd $zip $bd]
if {$success == 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkHttp $http
    delete_CkBinData $bd
    delete_CkZip $zip
    exit
}

# Get the entry for the file we want..
set entry [new_CkZipEntry]

set success [CkZip_EntryOf $zip "hamlet.xml" $entry]
if {$success == 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkHttp $http
    delete_CkBinData $bd
    delete_CkZip $zip
    delete_CkZipEntry $entry
    exit
}

# Convert all line endings to CRLF (if needed)
set lineEndingBehavior 2
set xmlStr [CkZipEntry_unzipToString $entry $lineEndingBehavior "utf-8"]
if {[CkZipEntry_get_LastMethodSuccess $entry] == 0} then {
    puts [CkZipEntry_lastErrorText $entry]
    delete_CkHttp $http
    delete_CkBinData $bd
    delete_CkZip $zip
    delete_CkZipEntry $entry
    exit
}

# The XML in this case is about 274K, so let's just examine the last 20 lines...
set sb [new_CkStringBuilder]

CkStringBuilder_Append $sb $xmlStr

puts [CkStringBuilder_lastNLines $sb 20 1]

delete_CkHttp $http
delete_CkBinData $bd
delete_CkZip $zip
delete_CkZipEntry $entry
delete_CkStringBuilder $sb