Sample code for 30+ languages & platforms
DataFlex

Add Data to multipart/form-data Request

See more HTTP Examples

Demonstrates how to add content (such as a JPG, PDF, XML, etc.) to multipart/form-data requests.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoReq
    Variant vBd
    Handle hoBd

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
    If (Not(IsComObjectCreated(hoReq))) Begin
        Send CreateComObject of hoReq
    End
    Set ComHttpVerb Of hoReq To "POST"
    Set ComContentType Of hoReq To "multipart/form-data"
    Set ComPath Of hoReq To "/xyz/something"

    Send ComAddParam To hoReq "param1" "value1"
    Send ComAddParam To hoReq "param2" "value2"

    // Add some small files to the request. (Small so we can see what the full request looks like without too much data..)
    Get Create (RefClass(cComChilkatBinData)) To hoBd
    If (Not(IsComObjectCreated(hoBd))) Begin
        Send CreateComObject of hoBd
    End
    Get ComLoadFile Of hoBd "qa_data/jpg/starfish20.jpg" To iSuccess
    Get pvComObject of hoBd to vBd
    Get ComAddBdForUpload Of hoReq "starfish20" "starfish20.jpg" vBd "image/jpeg" To iSuccess

    Get ComLoadFile Of hoBd "qa_data/pdf/helloWorld.pdf" To iSuccess
    Get pvComObject of hoBd to vBd
    Get ComAddBdForUpload Of hoReq "helloWorld" "helloWorld.pdf" vBd "application/pdf" To iSuccess

    Get ComLoadFile Of hoBd "qa_data/xml/tinyA.xml" To iSuccess
    Get pvComObject of hoBd to vBd
    Get ComAddBdForUpload Of hoReq "tinyA" "tinyA.xml" vBd "text/xml" To iSuccess

    // This HTTP request contains binary data, so we cannot call GenerateRequestText
    // to examine it as a string.  We can instead call GenerateRequestFile
    // to write the request to a file and then examine using a hex editor,
    // or an editor that is capable of handling null bytes and non-printable chars (perhaps by displaying "?" chars instead).
    Get ComGenerateRequestFile Of hoReq "qa_output/multipartFormDataRequest.bin" To iSuccess

    Showln "OK."

    // This is the HTTP multipart/form-data request built by the above code:

    // POST /xyz/something HTTP/1.1
    // Host: domain
    // Content-Type: multipart/form-data; boundary=------------090708030009010000030901
    // Content-Length: 2220
    // 
    // --------------090708030009010000030901
    // Content-Disposition: form-data; name="param1"
    // 
    // value1
    // --------------090708030009010000030901
    // Content-Disposition: form-data; name="param2"
    // 
    // value2
    // --------------090708030009010000030901
    // Content-Disposition: form-data; name="starfish20"; filename="starfish20.jpg"
    // Content-Type: image/jpeg
    // 
    // JPEG DATA HERE...
    // --------------090708030009010000030901
    // Content-Disposition: form-data; name="helloWorld"; filename="helloWorld.pdf"
    // Content-Type: application/pdf
    // 
    // PDF DATA HERE...
    // --------------090708030009010000030901
    // Content-Disposition: form-data; name="tinyA"; filename="tinyA.xml"
    // Content-Type: text/xml
    // 
    // XML DATA HERE...
    // --------------090708030009010000030901--
    // 


End_Procedure