Sample code for 30+ languages & platforms
Tcl

Set a Multipart Part Body from BinData

See more REST Examples

Demonstrates Rest.SetMultipartBodyBd, which sets the binary body of the selected multipart part from a BinData.

The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.

Background. A multipart request is assembled part by part: the part selector chooses the part being built, header fields describe it, and a SetMultipartBody method supplies its content. The request is then sent with a multipart send or full-request method.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set rest [new_CkRest]

set bTls 1
set bAutoReconnect 1
set success [CkRest_Connect $rest "example.com" 443 $bTls $bAutoReconnect]
if {$success == 0} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

#  The file paths are relative to the application's current working directory.  Absolute paths
#  may also be used.  Supply the paths appropriate to your own environment.

#  Select the multipart part to build, and set its header fields.
CkRest_put_PartSelector $rest "1"
CkRest_AddHeader $rest "Content-Disposition" "form-data; name=\"field1\""
CkRest_AddHeader $rest "Content-Type" "image/png"

#  Set the binary body of the selected part from a BinData.
set bdBody [new_CkBinData]

set bLoaded [CkBinData_LoadFile $bdBody "qa_data/image.png"]
if {$bLoaded != 1} then {
    puts "Failed to load the part body file."
    delete_CkRest $rest
    delete_CkBinData $bdBody
    exit
}

set success [CkRest_SetMultipartBodyBd $rest $bdBody]
if {$success == 0} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkBinData $bdBody
    exit
}

set responseText [CkRest_fullRequestMultipart $rest "POST" "/api/upload"]
if {[CkRest_get_LastMethodSuccess $rest] == 0} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkBinData $bdBody
    exit
}

puts "$responseText"

delete_CkRest $rest
delete_CkBinData $bdBody