Tcl
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
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