Sample code for 30+ languages & platforms
Unicode C++

Asynchronous HTTP Upload

See more Upload Examples

Demonstrates how to do an HTTP upload asynchronously in a background thread.

A server-side C# example showing how to receive an upload is located at C# ASP.NET Code to Receive Upload

Chilkat Unicode C++ Downloads

Unicode C++
#include <CkUploadW.h>

void ChilkatSample(void)
    {
    bool success = false;

    CkUploadW upload;

    // Specify the page (ASP, ASP.NET, Perl, Python, Ruby, CGI, etc)
    // that will process the HTTP Upload.
    upload.put_Hostname(L"www.mywebserver.com");
    upload.put_Path(L"/receiveUpload.aspx");

    // Add one or more files to be uploaded.
    upload.AddFileReference(L"file1",L"dude.gif");
    upload.AddFileReference(L"file2",L"pigs.xml");
    upload.AddFileReference(L"file3",L"sample.doc");

    // Begin the HTTP upload in a background thread:
    success = upload.BeginUpload();
    if (success != true) {
        wprintf(L"%s\n",upload.lastErrorText());
    }
    else {
        wprintf(L"Upload started...\n");
    }

    // Wait for the upload to finish.
    // Print the progress as we wait...
    while ((upload.get_UploadInProgress() == true)) {
        // We can abort the upload at any point by calling:
        // upload.AbortUpload();

        // Display the percentage complete and the number of bytes uploaded so far..
        // The total upload size will become set after the upload begins:
        wprintf(L"%u% %u/%u\n",upload.get_PercentUploaded(),upload.get_NumBytesSent(),upload.get_TotalUploadSize());

        // Sleep 2/10ths of a second.
        upload.SleepMs(200);

    }

    // Did the upload succeed?
    if (upload.get_UploadSuccess() == true) {
        wprintf(L"Files uploaded!\n");
    }
    else {
        wprintf(L"%s\n",upload.lastErrorText());
    }
    }