Sample code for 30+ languages & platforms
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 C Downloads

C
#include <C_CkUpload.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkUpload upload;

    success = FALSE;

    upload = CkUpload_Create();

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

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

    // Begin the HTTP upload in a background thread:
    success = CkUpload_BeginUpload(upload);
    if (success != TRUE) {
        printf("%s\n",CkUpload_lastErrorText(upload));
    }
    else {
        printf("Upload started...\n");
    }

    // Wait for the upload to finish.
    // Print the progress as we wait...
    while ((CkUpload_getUploadInProgress(upload) == 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:
        printf("%u% %u/%u\n",CkUpload_getPercentUploaded(upload),CkUpload_getNumBytesSent(upload),CkUpload_getTotalUploadSize(upload));

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

    }

    // Did the upload succeed?
    if (CkUpload_getUploadSuccess(upload) == TRUE) {
        printf("Files uploaded!\n");
    }
    else {
        printf("%s\n",CkUpload_lastErrorText(upload));
    }



    CkUpload_Dispose(upload);

    }