multipart 0.18.0

A backend-agnostic extension for HTTP libraries that provides support for POST multipart/form-data requests on both client and server.
Documentation
extern crate hyper;
extern crate multipart;

use multipart::server::Multipart;

use hyper::header::ContentType;
use hyper::server::*;

use std::fs::File;
use std::io;

fn main() {
    let listening = Server::http("127.0.0.1:0").expect("failed to bind socket")
        .handle(read_multipart).expect("failed to handle request");

    println!("bound socket to: {}", listening.socket);
}

fn read_multipart(req: Request, mut resp: Response) {
    if let Ok(mut multipart) = Multipart::from_request(req) {
        if let Err(e) = multipart.foreach_entry(|_| {}) {
            println!("error handling field: {}", e);
        }
    }

    let mut file = File::open("src/bin/test_form.html")
        .expect("failed to open src/bind/test_form.html");

    resp.headers_mut().set(ContentType("text/html".parse().unwrap()));

    let mut resp = resp.start().expect("failed to open response");
    io::copy(&mut file, &mut resp).expect("failed to write response");
}