Sample code for 30+ languages & platforms
PureBasic

HTTPS Upload File to Web Server

See more HTTP Examples

Uploads a file to a web server using HTTPS.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkHttpRequest.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ; The ContentType, HttpVerb, and Path properties should
    ; always be explicitly set.
    req.i = CkHttpRequest::ckCreate()
    If req.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpRequest::setCkHttpVerb(req, "POST")
    CkHttpRequest::setCkPath(req, "/receiveMyUpload.aspx")
    CkHttpRequest::setCkContentType(req, "multipart/form-data")

    CkHttpRequest::ckAddStringForUpload(req,"fileA","fileA.txt","This is the contents of file A","utf-8")
    success = CkHttpRequest::ckAddFileForUpload(req,"starfish.jpg","qa_data/jpg/starfish.jpg")
    If success = 0
        Debug CkHttpRequest::ckLastErrorText(req)
        CkHttpRequest::ckDispose(req)
        ProcedureReturn
    EndIf

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

    ; ----------------------------------------------------------------------------
    ; IMPORTANT:
    ; HTTP uploads require a counterpart implementation on the server, written in any desired language
    ; such as C#, Classic ASP, PHP, etc., which consumes the upload being sent.
    ; See: ASP.NET Receive Upload
    ; ----------------------------------------------------------------------------

    ; Do the upload.
    useSslTls.i = 1
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpSReq(http,"www.example.com",443,useSslTls,req,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttpRequest::ckDispose(req)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    Debug "response status code = " + Str(CkHttpResponse::ckStatusCode(resp))
    Debug "response body:"
    Debug CkHttpResponse::ckBodyStr(resp)


    CkHttpRequest::ckDispose(req)
    CkHttp::ckDispose(http)
    CkHttpResponse::ckDispose(resp)


    ProcedureReturn
EndProcedure