Sample code for 30+ languages & platforms
PureBasic

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 PureBasic Downloads

PureBasic
IncludeFile "CkRest.pb"
IncludeFile "CkBinData.pb"

Procedure ChilkatExample()

    success.i = 0

    rest.i = CkRest::ckCreate()
    If rest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    bTls.i = 1
    bAutoReconnect.i = 1
    success = CkRest::ckConnect(rest,"example.com",443,bTls,bAutoReconnect)
    If success = 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    ;  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::setCkPartSelector(rest, "1")
    CkRest::ckAddHeader(rest,"Content-Disposition","form-data; name=" + Chr(34) + "field1" + Chr(34))
    CkRest::ckAddHeader(rest,"Content-Type","image/png")

    ;  Set the binary body of the selected part from a BinData.
    bdBody.i = CkBinData::ckCreate()
    If bdBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    bLoaded.i = CkBinData::ckLoadFile(bdBody,"qa_data/image.png")
    If bLoaded <> 1
        Debug "Failed to load the part body file."
        CkRest::ckDispose(rest)
        CkBinData::ckDispose(bdBody)
        ProcedureReturn
    EndIf

    success = CkRest::ckSetMultipartBodyBd(rest,bdBody)
    If success = 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkBinData::ckDispose(bdBody)
        ProcedureReturn
    EndIf

    responseText.s = CkRest::ckFullRequestMultipart(rest,"POST","/api/upload")
    If CkRest::ckLastMethodSuccess(rest) = 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkBinData::ckDispose(bdBody)
        ProcedureReturn
    EndIf

    Debug responseText


    CkRest::ckDispose(rest)
    CkBinData::ckDispose(bdBody)


    ProcedureReturn
EndProcedure