Sample code for 30+ languages & platforms
Rust

Bandwidth Throttled Asynchronous HTTP Upload

See more Upload Examples

Demonstrates how to do an HTTP upload asynchronously in a background thread with limiting the rate to an approximate number of bytes/second. The only difference between this example and one without bandwidth throttling is that the BandwidthThrottleUp property is set.

Chilkat Rust Downloads

Rust

let upload = chilkat::Upload::new();

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

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

// Set the BandwidthThrottleUp property to throttle to approx 64K/second
upload.set_bandwidth_throttle_up(65536);

// Begin the HTTP upload in a background thread:
if upload.begin_upload().is_err() {
    println!("{}", upload.last_error_text());
} else {
    println!("Upload started...");
}

// Wait for the upload to finish.
// Print the progress as we wait...
while upload.upload_in_progress() {
    // 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:
    println!("{}% {}/{}", upload.percent_uploaded(), upload.num_bytes_sent(), upload.total_upload_size());

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

}

// Did the upload succeed?
if upload.upload_success() {
    println!("Files uploaded!");
} else {
    println!("{}", upload.last_error_text());
}