1 个不稳定版本
0.19.0 | 2023 年 4 月 23 日 |
---|
953 在 HTTP 服务器
523 每月下载量
175KB
3.5K SLoC
Multipart 2021
HTTP 文件上传的客户端和服务器端抽象(带有 Content-Type: multipart/form-data
的 POST 请求)。
支持多个不同的(同步 API)HTTP Crates。异步(即基于 futures
的)API 将由 multipart-async 提供。
关于分支
multipart-2021
是对 原始版本 的分支,现已归档。
分支只更新了库以支持 Rust 2018 和 2021 版本更改,API 不会有任何更改或改进。
您可以将对 multipart-2021
的导入重新绑定,以便所有示例继续正常工作
use multipart_2021 as multipart;
最低支持的 Rust 版本:1.56.0
维护状态:已归档
由于 Rust 的网络生态系统正在转向异步 API,因此此 Crates 的同步 API 形式变得可疑。此 Crates 的当前形式足够可用,因此截至 2020 年 6 月,它现在处于被动维护模式;bug 报告将在有时间时解决,PR 将被接受,但不会对现有 API 进行新的开发。
请期待 multipart-async 的发布,它针对 Hyper 的新版本。
文档
集成
在 examples/
下的示例文件演示了如何使用 multipart
与这些 Crates 一起使用。
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/bradfier/multipart-2021/blob/36b3ea73b8d3642ed42fc17d9d6736e55d461b62/examples/rocket.rs)
⚡ 由 ⚡ 驱动
buf_redux
自定义的 std::io::BufReader
替换,专为在此crate中使用而创建。需要它是因为它可以在缓冲区不为空的情况下读取更多的字节,这在边界跨越两次读取时是必要的。(编写一个新的crate比尝试将其添加到 std::io::BufReader
更容易。)
httparse
快速、零拷贝的HTTP头部解析,用于读取multipart/form-data
请求体的字段头部。
双向
快速字符串和字节字符串搜索。用于在请求体中查找边界。当可能时使用SIMD加速。
许可证
根据以下之一获得许可:
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确表示,否则根据Apache-2.0许可证定义的,你提交的旨在包含在作品中的任何贡献,都将根据上述双重许可,而不附加任何额外条款或条件。
依赖
~9–22MB
~337K SLoC