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

bin+lib multipart-2021

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

1 个不稳定版本

0.19.0 2023 年 4 月 23 日

953HTTP 服务器

Download history 2/week @ 2024-03-20 70/week @ 2024-03-27 88/week @ 2024-04-03 93/week @ 2024-04-10 99/week @ 2024-04-17 119/week @ 2024-04-24 47/week @ 2024-05-01 94/week @ 2024-05-08 95/week @ 2024-05-15 224/week @ 2024-05-22 86/week @ 2024-05-29 95/week @ 2024-06-05 89/week @ 2024-06-12 148/week @ 2024-06-19 187/week @ 2024-06-26

523 每月下载量

MIT/Apache

175KB
3.5K SLoC

Multipart 2021 在 Crates.io

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许可证定义的,你提交的旨在包含在作品中的任何贡献,都将根据上述双重许可,而不附加任何额外条款或条件。

依赖

~9–22MB
~337K SLoC