Sample code for 30+ languages & platforms
Perl

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

Perl
use chilkat();

$success = 0;

$upload = chilkat::CkUpload->new();

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

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

# Begin the HTTP upload in a background thread:
$success = $upload->BeginUpload();
if ($success != 1) {
    print $upload->lastErrorText() . "\r\n";
}
else {
    print "Upload started..." . "\r\n";
}

# Wait for the upload to finish.
# Print the progress as we wait...
while (($upload->get_UploadInProgress() == 1)) {
    # 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:
    print $upload->get_PercentUploaded() . "% " . $upload->get_NumBytesSent() . "/" . $upload->get_TotalUploadSize() . "\r\n";

    # Sleep 2/10ths of a second.
    $upload->SleepMs(200);

}

# Did the upload succeed?
if ($upload->get_UploadSuccess() == 1) {
    print "Files uploaded!" . "\r\n";
}
else {
    print $upload->lastErrorText() . "\r\n";
}