1 个不稳定版本
使用旧的 Rust 2015
0.16.1-p1 | 2020年5月18日 |
---|
#1253 在 HTTP 服务器
每月 下载 27 次
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 
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版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的您有意提交以包含在作品中的任何贡献,将按上述方式双重许可,无需任何额外条款或条件。
依赖项
~10-22MB
~343K SLoC