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.33.0
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 qiniu_multipart::client::Multipart
, as well
as integration with the new hyper::Client
API via qiniu_multipart::client::lazy::Multipart
(new in 0.5).
Server integration for hyper::server::Request
via qiniu_multipart::server::Multipart
.
via the iron
feature.
Provides regular server-side integration with iron::Request
via qiniu_multipart::server::Multipart
,
as well as a convenient BeforeMiddleware
implementation in qiniu_multipart::server::iron::Intercept
.
multipart
in 0.14!via the nickel
feature.
Provides server-side integration with &mut nickel::Request
via qiniu_multipart::server::Multipart
.
via the tiny_http
feature.
Provides server-side integration with tiny_http::Request
via qiniu_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. Uses SIMD acceleration when possible.
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.