Sample code for 30+ languages & platforms
Tcl

REST File Upload (multipart/form-data)

See more REST Examples

Demonstrates how to upload a file using multipart/form-data.

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 rest [new_CkRest]

# Connect to the HTTP server using TLS.
set bTls 1
set port 443
set bAutoReconnect 1
# Make sure to replace "www.chilkatsoft.com" with your domain..
set success [CkRest_Connect $rest "www.chilkatsoft.com" $port $bTls $bAutoReconnect]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

set fileStream [new_CkStream]

CkStream_put_SourceFile $fileStream "qa_data/jpg/starfish.jpg"

CkRest_AddHeader $rest "Content-Type" "multipart/form-data"

CkRest_put_PartSelector $rest "1"
CkRest_AddHeader $rest "Content-Type" "image/jpg"
CkRest_AddHeader $rest "Content-Disposition" "form-data; name=\"filename\"; filename=\"starfish.jpg\""
CkRest_SetMultipartBodyStream $rest $fileStream
CkRest_put_PartSelector $rest "0"

set responseBody [CkRest_fullRequestMultipart $rest "POST" "/the_uri_path_to_receive_the_upload"]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkStream $fileStream
    exit
}

if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "Received error response code: [CkRest_get_ResponseStatusCode $rest]"
    delete_CkRest $rest
    delete_CkStream $fileStream
    exit
}

puts "File uploaded"

delete_CkRest $rest
delete_CkStream $fileStream