extern crate hyper; extern crate multipart; use hyper::client::Request; use hyper::method::Method; use hyper::net::Streaming; use multipart::client::Multipart; use std::io::Read; fn main() { let url = "http://localhost:80".parse() .expect("Failed to parse URL"); let request = Request::new(Method::Post, url) .expect("Failed to create request"); let mut multipart = Multipart::from_request(request) .expect("Failed to create Multipart"); write_body(&mut multipart) .expect("Failed to write multipart body"); let mut response = multipart.send().expect("Failed to send multipart request"); if !response.status.is_success() { let mut res = String::new(); response.read_to_string(&mut res).expect("failed to read response"); println!("response reported unsuccessful: {:?}\n {}", response, res); } // Optional: read out response } fn write_body(multi: &mut Multipart>) -> hyper::Result<()> { let mut binary = "Hello world from binary!".as_bytes(); multi.write_text("text", "Hello, world!")?; multi.write_file("file", "lorem_ipsum.txt")?; // &[u8] impl Read multi.write_stream("binary", &mut binary, None, None) .and(Ok(())) }