Visual FoxPro 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"

Visual FoxPro Example

LOCAL loRest
LOCAL lnSuccess
LOCAL lnBTls
LOCAL lnPort
LOCAL lnBAutoReconnect
LOCAL loFileStream2
LOCAL lcStrResponseBody
LOCAL loJsonResponse
LOCAL lcId
LOCAL lcObject
LOCAL lnCreated
LOCAL lcFilename
LOCAL lcPurpose
LOCAL lnSize
LOCAL lcType
LOCAL lcUrl

loRest = CreateObject('Chilkat_9_5_0.Rest')

*  URL: https://files.stripe.com/v1/files
lnBTls = 1
lnPort = 443
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("files.stripe.com",lnPort,lnBTls,lnBAutoReconnect)
IF (lnSuccess <> 1) THEN
    ? "ConnectFailReason: " + STR(loRest.ConnectFailReason)
    ? loRest.LastErrorText
    RELEASE loRest
    CANCEL
ENDIF

loRest.SetAuthBasic("STRIPE_SECRET_KEY","")

loRest.PartSelector = "1"
loRest.AddHeader("Content-Disposition",'form-data; name="purpose"')
loRest.SetMultipartBodyString("dispute_evidence")

loRest.PartSelector = "2"
loFileStream2 = CreateObject('Chilkat_9_5_0.Stream')
loFileStream2.SourceFile = "/path/to/a/file.jpg"
loRest.AddHeader("Content-Disposition",'form-data; name="/path/to/a/file.jpg"; filename="/path/to/a/file.jpg"')
loRest.AddHeader("Content-Type","image/jpeg")
loRest.SetMultipartBodyStream(loFileStream2)

loRest.PartSelector = "0"

loRest.AddHeader("Expect","100-continue")

lcStrResponseBody = loRest.FullRequestMultipart("POST","/v1/files")
IF (loRest.LastMethodSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loFileStream2
    CANCEL
ENDIF

loJsonResponse = CreateObject('Chilkat_9_5_0.JsonObject')
loJsonResponse.Load(lcStrResponseBody)

lcId = loJsonResponse.StringOf("id")
lcObject = loJsonResponse.StringOf("object")
lnCreated = loJsonResponse.IntOf("created")
lcFilename = loJsonResponse.StringOf("filename")
lcPurpose = loJsonResponse.StringOf("purpose")
lnSize = loJsonResponse.IntOf("size")
lcType = loJsonResponse.StringOf("type")
lcUrl = loJsonResponse.StringOf("url")

RELEASE loRest
RELEASE loFileStream2
RELEASE loJsonResponse

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"
}