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

bin+lib multipart2

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

1个不稳定版本

使用旧的Rust 2015

新版本 0.18.0 2024年8月21日

1466HTTP服务器

Download history 108/week @ 2024-08-16

108 每月下载量

MIT/Apache

175KB
3.5K SLoC

Multipart 构建状态 在Crates.io上

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

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

最低支持的Rust版本:1.36.0
维护状态:被动

随着Rust的Web生态系统转向异步API,这个库在同步API形式下的需求变得可疑。这个库在其当前形式下足够可用,因此从2020年6月开始,它现在处于被动维护模式;将在有时间的情况下处理错误报告,并接受PR,但不会对现有API进行新的开发。

不久将推出multipart-async的新版本,该版本针对Hyper的新版本。

文档

集成

examples/下提供了使用multipart与这些库的示例文件。

Hyper

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

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

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

通过 multipart::server::Multipart 实现对 hyper::server::Request 的服务器集成。

Iron

通过 iron 功能。

提供通过 multipart::server::Multipartiron::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 服务器上使用 multipartexamples/rocket.rs

⚡ 由 ⚡ 提供动力

buf_redux

可定制的 std::io::BufReader 替代品,用于在此软件包中创建。需要它是因为它可以读取更多字节到缓冲区,而不会使缓冲区为空,这在边界跨越两次读取时是必要的。(编写新的软件包比试图将其添加到 std::io::BufReader 更容易。)

httparse

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

twoway

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

许可证

根据以下之一获得许可

由您选择。

贡献

除非您明确声明,否则任何您有意提交并包含在作品中的贡献,如Apache-2.0许可证中定义,均应双重许可,上述许可,无任何附加条款或条件。

依赖关系

~9-20MB
~323K SLoC