Tcl Stripe: Create a File Upload

Back to Index

Uploads a file to Stripe.

Documentation: https://stripe.com/docs/api/curl#create_file_upload

CURL Command

curl https://files.stripe.com/v1/files \
   -u STRIPE_SECRET_KEY: \
   -F purpose=dispute_evidence \
   -F file="@/path/to/a/file.jpg"

Tcl Example


load ./chilkat.dll

set rest [new_CkRest]

#  URL: https://files.stripe.com/v1/files
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "files.stripe.com" $port $bTls $bAutoReconnect]
if {[expr $success != 1]} then {
    puts "ConnectFailReason: [CkRest_ConnectFailReason $rest]"
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

CkRest_SetAuthBasic $rest "STRIPE_SECRET_KEY" ""

CkRest_put_PartSelector $rest "1"
CkRest_AddHeader $rest "Content-Disposition" "form-data; name=\"purpose\""
CkRest_SetMultipartBodyString $rest "dispute_evidence"

CkRest_put_PartSelector $rest "2"
set fileStream2 [new_CkStream]

CkStream_put_SourceFile $fileStream2 "/path/to/a/file.jpg"
CkRest_AddHeader $rest "Content-Disposition" "form-data; name=\"/path/to/a/file.jpg\"; filename=\"/path/to/a/file.jpg\""
CkRest_AddHeader $rest "Content-Type" "image/jpeg"
CkRest_SetMultipartBodyStream $rest $fileStream2

CkRest_put_PartSelector $rest "0"

CkRest_AddHeader $rest "Expect" "100-continue"

set strResponseBody [CkRest_fullRequestMultipart $rest "POST" "/v1/files"]
if {[expr [CkRest_LastMethodSuccess $rest] != 1]} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkStream $fileStream2
    exit
}

set jsonResponse [new_CkJsonObject]

CkJsonObject_Load $jsonResponse $strResponseBody

set id [CkJsonObject_stringOf $jsonResponse "id"]
set object [CkJsonObject_stringOf $jsonResponse "object"]
set created [CkJsonObject_IntOf $jsonResponse "created"]
set filename [CkJsonObject_stringOf $jsonResponse "filename"]
set purpose [CkJsonObject_stringOf $jsonResponse "purpose"]
set size [CkJsonObject_IntOf $jsonResponse "size"]
set type [CkJsonObject_stringOf $jsonResponse "type"]
set url [CkJsonObject_stringOf $jsonResponse "url"]

delete_CkRest $rest
delete_CkStream $fileStream2
delete_CkJsonObject $jsonResponse

Sample JSON Response Body

{
  "id": "file_1BnEEuGswQrCoh0XqB3XkqAg",
  "object": "file_upload",
  "created": 1516661888,
  "filename": "path",
  "purpose": "sigma_scheduled_query",
  "size": 500,
  "type": "csv",
  "url": "https://stripe-upload-api.s3.amazonaws.com/uploads/file_1BnEEuGswQrCoh0XqB3XkqAg?AWSAccessKeyId=KEY_ID\u0026Expires=TIMESTAMP\u0026Signature=SIGNATURE"
}