Client- and server-side abstractions for HTTP file uploads (POST requests with Content-Type: multipart/form-data
).
Supports several different (synchronous API) HTTP crates. Asynchronous (i.e. futures
-based) API support will be provided by multipart-async.
Minimum supported Rust version: 1.22.1*
mock
, client
and server
features, only guaranteed to compileFully tested Rust version: 1.26.1
Example files demonstrating how to use multipart
with these crates are available under examples/
.
via the hyper
feature (enabled by default).
Note: Hyper 0.9, 0.10 (synchronous API) only; support for asynchronous APIs will be provided by multipart-async.
Client integration includes support for regular hyper::client::Request
objects via multipart::client::Multipart
, as well as integration with the new hyper::Client
API via multipart::client::lazy::Multipart
(new in 0.5).
Server integration for hyper::server::Request
via multipart::server::Multipart
.
via the iron
feature.
Provides regular server-side integration with iron::Request
via multipart::server::Multipart
, as well as a convenient BeforeMiddleware
implementation in multipart::server::iron::Intercept
.
multipart
in 0.14!via the nickel
feature.
Provides server-side integration with &mut nickel::Request
via multipart::server::Multipart
.
via the tiny_http
feature.
Provides server-side integration with tiny_http::Request
via multipart::server::Multipart
.
Direct integration is not provided as the Rocket folks seem to want to handle multipart/form-data
behind the scenes which would supercede any integration with multipart
. However, an example is available showing how to use multipart
on a Rocket server: examples/rocket.rs
Customizable drop-in std::io::BufReader
replacement, created to be used in this crate. Needed because it can read more bytes into the buffer without the buffer being empty, necessary when a boundary falls across two reads. (It was easier to author a new crate than try to get this added to std::io::BufReader
.)
Fast, zero-copy HTTP header parsing, used to read field headers in multipart/form-data
request bodies.
Fast string and byte-string search. Used to find boundaries in the request body. SSE 4.2 acceleration available under the sse42
or twoway/pcmp
features.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.