#http #post-requests #form-data #hyper #http-post #upload

bin+lib qiniu-multipart

一个支持客户端和服务器端POST multipart/form-data请求的HTTP库的通用扩展

4个版本

使用旧的Rust 2015

0.17.3 2020年10月15日
0.17.2 2020年10月15日
0.17.1 2020年9月21日
0.16.2 2019年11月6日

#464 in HTTP客户端

28 每月下载量
2 crates 中使用

MIT/Apache

175KB
3.5K SLoC

Multipart 构建状态 在Crates.io上

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

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

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

随着Rust中的Web生态系统转向异步API,此crate在同步API形式中的需求变得可疑。此crate的现状足够可用,因此自2020年6月起,它现在处于被动维护模式;将按时间允许处理错误报告,并将接受PR,但不会进行现有API的新开发。

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

文档

集成

examples/下提供了一些示例文件,演示了如何使用multipart与这些crate一起使用。

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::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/bachue/multipart/blob/953641da42c6bd4378bb296276b6368365a26030/examples/rocket.rs)

⚡ 由⚡提供支持

buf_redux

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

httparse

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

双向

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

许可证

根据以下任一许可证授权:

您可选。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的您有意提交以包含在作品中的任何贡献,将根据上述条款双授权,不附加任何额外条款或条件。

依赖关系

~10–23MB
~359K SLoC