#hyper #iron #http #upload #hyper-client #form-data #http-header

bin+lib multipart-any

为 HTTP 库提供客户端和服务器端支持的不可知后端扩展,支持 POST multipart/form-data 请求

1 个不稳定版本

使用旧的 Rust 2015

0.16.1-p12020年5月18日

#1253HTTP 服务器

每月 下载 27

MIT/Apache

170KB
3K SLoC

Multipart 衍生。

  • 用于解析任何 multipart/* 内容类型流。
  • 更新 mime, mime_guess Crates。
  • 修复编译器警告。

动机

我想解析来自 WebCam 的 multipart/x-mixed-replace (也称为 Motion JPEG) 电影文件响应体。因此,该解析器在没有在 multipart 标题中找到 Content-Disposition 标题时不会抛出异常。

就像这样

Content-Type: multipart/x-mixed-replace; boundary=myboundary

--myboundary
Content-Type: image/jpeg
Content-Length: 272922

JPEG binary data here...

Multipart 在 Crates.io 上

HTTP 文件上传的客户端和服务器端抽象(使用 Content-Type: multipart/form-data 的 POST 请求)。

支持几个不同的(同步 API)HTTP Crates。异步(即基于 futures 的)API 支持将由 multipart-async 提供。

最低支持的 Rust 版本:1.24.1

文档

集成

示例文件演示如何使用这些 Crates 中的 multipart 可在 examples/ 下使用。

Hyper

通过 hyper 功能(默认启用)。

注意:Hyper 0.9, 0.10(同步 API)仅限;异步 API 的支持将由 multipart-async 提供。

客户端集成支持通过 multipart::client::Multipart 对象支持常规的 hyper::client::Request,以及通过 multipart::client::lazy::Multipart 与新的 hyper::Client API 集成(0.5版本新增)。

通过 multipart::server::Multipart 集成 hyper::server::Request 服务器。

Iron

通过 iron 功能。

提供通过 multipart::server::Multipart 的常规服务器端集成 iron::Request,以及 multipart::server::iron::Intercept 中的方便的 BeforeMiddleware 实现。

Nickel 在 0.14 版本中返回到 multipart

通过 nickel 功能。

提供通过 multipart::server::Multipart 的服务器端集成 &mut nickel::Request

tiny_http

通过 tiny_http 功能。

提供通过 multipart::server::Multipart 的服务器端集成 tiny_http::Request

Rocket

由于Rocket团队似乎希望在不超越multipart/form-data集成的情况下在幕后处理,因此不提供直接集成。然而,有一个示例展示了如何在Rocket服务器上使用multipart:[examples/rocket.rs](https://github.com/kkazuo/multipart-any/blob/86ff31425ee56c7c4e6047353db31e5a25a27160/examples/rocket.rs)

⚡ 由 ⚡ 驱动

buf_redux

可定制的内置 std::io::BufReader 替换,创建用于此存储库。由于它可以在缓冲区不为空的情况下读取更多字节,因此需要当边界跨越两个读取时使用。 (编写新的存储库比尝试将其添加到 std::io::BufReader 更容易。)

httparse

快速、零拷贝 HTTP 头部解析,用于读取 multipart/form-data 请求体中的字段头部。

twoway

快速字符串和字节字符串搜索。用于在请求体中查找边界。在可能的情况下使用SIMD加速。

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的您有意提交以包含在作品中的任何贡献,将按上述方式双重许可,无需任何额外条款或条件。

依赖项

~10-22MB
~343K SLoC